标签:对象 多态 xxx 动作 属性 play one 表示 splay
面向对象的三大特征
封装,继承,多态; 有了封装,才能继承,有了继承,才能说多态
封装
1、什么是封装?有什么作用
1.1、保证内部结构的安全性。
1.2、屏蔽复杂,暴露简单
比如不允许直接更新,通过方法更新,在方法内可以检验
2、怎么封装?
2.1 通过属性 私有化 (private)
2.2 1个属性对外提供两个set和get方法。外部程序只能通过set方法修改,只能通过get方法读,
可以在set方法中设立关卡来保证数据的安全性。
3、static 和 空指针异常
3.1 static 和 没有static 的方法
带有static的方法,通过 “类名.” 的方式访问;只有带static 的,才能通过 类名.
没有带有static 的方法 被称为实例方法。通过先new对象,然后 用 "引用." 的方式调用(对象方法,必须有一个对象)
3.2 空指针异常
方法如果没有static, 是实例方法, 调用是必须有对象的存在。
1 /* 2 空指针异常导致的最本质的原因是? 3 空引用访问“实例相关的数据”,会出现空指针异常。 4 5 实例相关的包括:实例变量 + 实例方法。 6 */ 7 public class NullPointerTest{ 8 public static void main(String[] args){ 9 User u = new User(); 10 System.out.println(u.id); // 0 11 u.doSome(); 12 13 // 引用变成空null 14 u = null; 15 16 // id的访问,需要对象的存在。 17 //System.out.println(u.id); // 空指针异常 18 19 // 一个实例方法的调用也必须有对象的存在。 20 //u.doSome(); // 空指针异常。 21 } 22 } 23 24 25 // 类 = 属性 + 方法 26 // 属性描述状态 27 // 方法描述行为动作 28 class User{ 29 30 // 实例变量 31 int id; 32 33 // 实例方法(对象相关的方法,对象级别的方法,应该是一个对象级别的行为。) 34 // 方法模拟的是对象的行为动作。 35 public void doSome(){ 36 System.out.println("do some!"); 37 } 38 39 // 考试的行为,由于每一个人考试之后的分数不一样,所以考试行为应该必须有对象的参与。 40 public void exam(){ 41 42 } 43 }
4、set 和 get 方法
封装的第二步:对外提供公开的set方法和get方法作为操作入口。并且都不带static。都是实例方法。
get方法的要求:
public 返回值类型 get+属性名首字母大写(无参){
return xxx;
}
set 方法的要求
public void set+属性名首字母大写(有1个参数){
xxx = 参数;
}
1 public class Person{ 2 // private 表示私有的,被这个关键字修饰之后,该数据只能在本类中访问。 3 // 出了这个类,age属性就无法访问了。私有的。 4 private int age; // 每一个人年龄值不同,对象级别的属性。 5 6 // 对外提供简单的访问入口(电视机的遥控器就相当于是电视机的访问入口,简单明了。) 7 // 外部程序只能通过调用以下的代码来完成访问 8 // 思考:你应该对外提供几个访问入口? 9 // 思考:这些操作入口是否应该是方法呢? 10 // 写一个方法专门来完成读。(get) 11 // 写一个方法专门来完成写。(set) 12 // get和set方法应该带有static,还是不应该有static,get和set方法应该定义为实例方法吗? 13 // get读年龄,set改年龄,这个读和改都是操作的一个对象的年龄。(没有对象何来年龄) 14 // 封装的第二步:对外提供公开的set方法和get方法作为操作入口。并且都不带static。都是实例方法。 15 16 // get方法 17 public int getAge(){ 18 return age; 19 } 20 21 // set方法 22 public void setAge(int nianLing){ 23 // 能不能在这个位置上设置关卡!!!! 24 if(nianLing < 0 || nianLing > 150){ 25 System.out.println("对不起,年龄值不合法,请重新赋值!"); 26 return; //直接终止程序的执行。 27 } 28 //程序能够执行到这里,说明年龄一定是合法的。 29 age = nianLing; 30 } 31 32 }
标签:对象 多态 xxx 动作 属性 play one 表示 splay
原文地址:https://www.cnblogs.com/zhangbl55666/p/13583526.html