JAVA学习笔记2
2020年7月30日
封装
封装,指的是对一个类进行包装封闭,使内部的数据安全,不会被随意修改访问。就像电视机和遥控器,电视机是一个非常复杂的器件,但是我们只需要用遥控器进行简单的操作就能完成对电视机的控制,对于用户来说,他们的使用方便快捷易懂,不易出错,体验好;对于开发者来说,封装保证了自己程序内部的安全,不易被修改,也保证了产品的稳定性。
如何封装?首先要将类中的属性设为私有化
封装的第一步:关键字 private
private 表示私有的,被这个关键字修饰之后,该数据只能在本类中访问。
出了这个类,属性就无法访问了。私有的。
例如,定义一个类 人类Person
public class Person{
private int age; // 每一个人年龄值不同,对象级别的属性。
}
这样age 就是一个私有变量,仅在Person类中允许被访问,在外部访问是无法做到的。
但是这样又未免太过安全,使得age成了无用之物。这时就得需要接口方法
接口方法分为读数据(get)和写数据(set)方法,他们来完成对类中私有变量的读取和更改写入
get读年龄,set改年龄,这个读和改都是操作的一个对象的年龄。(没有对象何来年龄)
封装的第二步:对外提供公开的set方法和get方法作为操作入口。并且都不带static。都是实例方法。
下为实例方法的格式
[修饰符列表] 返回值类型 方法名(形式参数列表)
{}
//get方法,只需return age变量即可完成对age的读取;
public int getAge(){
return age;
}
//set方法,通过传参去修改age变量
public void setAge(int nianLing){
age = nianLing;
}
**注意:
java开发规范中有要求,set方法和get方法要满足以下格式
get方法的要求:
public 返回值类型 get+属性名首字母大写(无参){
return xxx;
}
**set方法的要求:
public void set+属性名首字母大写(有1个参数){
xxx = 参数;
}**
一般来说,在set方法都会去加上限制条件来判断输入是否合法,从而去避免对数据的乱改而造成破坏。
对于age来说
public void setAge(int nianLing){
// 在这个位置上设置关卡
if(nianLing < 0 || nianLing > 150){
System.out.println("对不起,年龄值不合法,请重新赋值!");
return; //直接终止程序的执行。
}
//程序能够执行到这里,说明年龄一定是合法的。
age = nianLing;
}
空指针异常NullPointerException
出现空指针异常的前提条件是?
"空引用"访问实例【对象相关】相关的数据时,都会出现空指针异常。
空指针异常导致的最本质的原因是?
空引用访问“实例相关的数据”,会出现空指针异常。
实例相关的包括:实例变量 + 实例方法。