封装:是指隐藏对象的属性和实现细节,进对外提供公共访问方式

好处:将变化隔离。便于使用,提高重用性,提高安全性

封装原则:将不需要对外提供的额内容隐藏起来,把属性都隐藏,提供公共方法对其访问

 package com_package2;

     class Age {
int age;
/*/ public void Haha(int t)
//{ if(t>=0)
// age=t;
else
age=0;
}
// public int getHaha(int t)
// {
// return t; // }**/
void speak()
{
System.out.println("age="+age); } }

首先注意观察:Age类中的属性age没有说公有,也没有说私有,再加上这个类也没说是私有和公有,那么这个属性是不受保护的,创建对象后,age是可以被改动也可以被访问的

但是如果age属性变成了private那么AgeDemo是无法访问到age属性的

 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();//创建对象
//a.Haha(20);
a.age=20;//访问Age类中的年龄属性
a.speak();//访问Age类中的speak方法 } }

这里的age是不被保护的

再来看,要是想要访问private属性,那么,可以在中间加一个给属性赋值的public方法如下:

 package com_package2;

     class Age {
private int age;
public void Haha(int t)
{ age=t;
}
// public int getHaha(int t)
// {
// return t; // }
void speak()
{
System.out.println("age="+age); } }

在这里面,age是私有的其他类无法访问,但是加了一个public方法来对age属性进行赋值

 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();
//a.Haha(20);
a.Haha(20);
a.speak(); } }

通过Haha对age进行访问得到age=20

在此基础上可以增加一点算法:

 package com_package2;

     class Age {
private int age;
public void Haha(int t)
{ if(t>=0&&t<=130)
age=t;
else
age=-1;
}
// public int getHaha(int t)
// {
// return t; // }
void speak()
{
System.out.println("age="+age); } }
 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();
//a.Haha(20);
a.Haha(-20);
a.speak(); } }

这样就可以判断年龄的可能性  得-1

由此演变成get set方法:

 package com_package2;

     class Age {
private int age;
public void setAge(int t)
{ if(t>=0&&t<=130)
age=t;
else
age=-1;
}
public int getAge(int t)
{
return t; }
void speak()
{
System.out.println("age="+age); } }
 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();
//a.Haha(20);
a.setAge(-20);
a.speak(); } }

这样的演变就足以说明set,get方法的由来。通常情况下,会将类中的成员变量私有化,为了避免属性直接被访问导致数据错误,并对外界听了公共的访问方式,对该

属性进行访问,这样做的好处是:可以对属性进行可控,而对属性访问的公共方法名称规范定义的格式是:set属性(),get属性()。当然get(),set()都可以在系统中手动生成。

关于这两个方法:Java中的私有属性set()是给属性赋值的,get()是取得属性值的
被设置和存取的属性一般是私有
主要是起到封装的作用,不允许直接对属性操作
set()和get()不一定同时存在,看程序需求

面向对象(封装)get set的由来的更多相关文章

  1. Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...

  2. Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js

    Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一  三个基本的特性:封装.继承与多态1 1.2. 魔 ...

  3. Atitit 面向对象  封装的实现原理

    Atitit 面向对象  封装的实现原理 1.1. 动态对象的模拟使用map+函数接口可以实现1 1.2. 在用结构体 + 函数指针 模拟 对象 1 1.3. This指针..1 1.4. " ...

  4. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  5. OC面向对象—封装

    OC面向对象—封装 一.面向对象和封装 面向对象的三大特性:封装(成员变量).继承和多态 在OC语言中,使用@interface和@implementation来处理类. @interface就好像暴 ...

  6. python面向对象封装案例(附:is和==的区别)

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  7. python-面向对象-04_面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  8. python-面向对象-05_面向对象封装案例 II

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...

  9. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  10. 从普通函数到对象方法 ------Windows窗口过程的面向对象封装

    原文地址:http://blog.csdn.net/linzhengqun/article/details/1451088 从普通函数到对象方法 ------Windows窗口过程的面向对象封装 开始 ...

随机推荐

  1. Tsung 初步介绍安装

    tsung是erlang的一个开源的一个压力测试工具,可以测试包括HTTP, WebDAV, Mysql, PostgreSQL, LDAP, and XMPP/Jabber等服务器.针对 HTTP ...

  2. TP 接收post请求使用框架自带函数I()防止注入

    <input id="dele_id[]" value="1" type="checkbox" /> <input id= ...

  3. 继承ViewGroup类

    Android中,布局都是直接或间接的继承自ViewGroup类,其中,ViewGroup的直接子类目前有: AbsoluteLayout, AdapterView<T extends Adap ...

  4. 资源:Localization – 本地化

    Resource Dictionary –资源字典 所有的资源项在最终都会被整合到Resource Dictionary中的,也就是说无论是FrameworkElement的Resources,还是W ...

  5. MySQL集群搭建

    在集群中的所有主机上安装提供集群功能的软件包 官网上下载的  mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64.tar.gz 规划了5台服务器,10.10. ...

  6. intellij idea 大内存优化配置 idea64.exe.vmoptions文件配置

    -ea-server-Xms2G-Xmx4096M-Xss2m-XX:MaxMetaspaceSize=2G-XX:ReservedCodeCacheSize=1G-XX:MetaspaceSize= ...

  7. 用php動態產生各種尺寸的圖片

    我的做法是用php動態產生各種尺寸的圖片,例如<img src="img.php?src=a.jpg&width=100&height=200"...< ...

  8. 【docker】学习笔记一:制作自己的centos6.9镜像

    前言: 最近开始研究docker,在这里做一个记录. 本来开始想用centos7系列做镜像,毕竟是最新版本的centos,但是centos7有一个严重的bug,就是正常启动的镜像不能使用systemc ...

  9. Javascript代码收集

    1.模仿jquery each 原文地址 function each(obj, fn){ var i; if(Object.prototype.toString.call(obj) === '[obj ...

  10. JavaScript:学习笔记(4)——This关键字

    JavaScript:学习笔记(4)——This关键字 以前这篇帖子是关于闭包的,但是我想弄明白的其实是This关键字.JavaScript的this和Java等面向对象语言中的this大不一样,bi ...