面向对象编程语言模拟客观世界,客观世界里的成员变量都是隐藏在对象内部的,外界无法直接操作和修改。
封装可以认为是一个保护屏障,防止该类的代码和数据被其他类随意访问和修改。要访问该类的数据,必须要通过指定的方式才可以。
适当的封装,可以让我们的代码更容易维护和理解,也加强了代码的安全性。
将【属性隐藏】起来,如果想要访问类中的某个属性,提供【公共的方法】对其访问。
封装:
使用private关键字来修饰成员变量
需要提供getXxx和setXxx方法进行成员变量的访问
操作:
private是一个权限修饰符,代表最小权限
可以修饰成员变量,也可以修饰成员方法
被private修饰后的成员变量和成员方法,只能在本类中访问
private使用格式:
private 数据类型 变量名;
private String name; private int age;
封装优化1--this
在setXxx方法中形参和成员变量名如果相同,就会发生就近原则,把方法中的变量当做形参!导致赋值失败!这时可以用this关键字来解决!
this:方法被哪个对象调用,方法中的this就代表哪个对象!
private String name; public void setName(String name) { //name=name//此时识别的是形参自己给自己赋值 this.name = name;//成员变量=形参中的name }
方法当中只有一个变量名,默认也是使用this修饰,可以省略不写
封装优化2---构造方法
当一个对象被创建出来的时候,构造方法用来初始化对象,给对象的成员变量赋初始值。
(假如:一个类中有几十个成员变量,每一次new对象就要挨个给赋值很麻烦!如果用构造方法可以一次性把变量进行初始化赋值)
无论你是否在类中定义构造方法,当类被定义出来的时候,系统会自动给该类分配一个构造方法---无参的构造方法,
一旦在类中显式的定义构造方法,Java自动提供的默认无参构造方法就会失效(被收回)。
修饰符 构造方法名(参数列表) { // 方法体内容 } // 构造方法没有返回值,构造方法名和类名完全一致,不需要void。
注意事项
-
构造方法名称必须和所在的类名完全一样,就连大小写一样
-
构造方法不用声明返回值类型,连void也不需要
-
构造方法不能用return一个具体的返回值。
-
如果定义类时没有显式定义构造方法,系统会提供一个默认的无参构造方法
-
一旦自定义了一个构造方法,那么编译器将会收回默认提供的构造方法
-
构造方法可以重载:方法名称相同,参数列表不同
标准类:
JavaBean(个人想法,java是咖啡,Bean翻译是豆。合起来 咖啡豆?)是Java语言编写类的一种标准规范
-
-
要为每一个成员变量提供一对公共的getXxx和setXxx方法
-
编写一个无参的构造方法
-