Java 封装
2021-03-30 12:26
标签:对象 多态 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, 是实例方法, 调用是必须有对象的存在。 4、set 和 get 方法 封装的第二步:对外提供公开的set方法和get方法作为操作入口。并且都不带static。都是实例方法。 get方法的要求: set 方法的要求 public void set+属性名首字母大写(有1个参数){ Java 封装 标签:对象 多态 xxx 动作 属性 play one 表示 splay 原文地址:https://www.cnblogs.com/zhangbl55666/p/13583526.html 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 }
public 返回值类型 get+属性名首字母大写(无参){
return xxx;
}
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 150){
25 System.out.println("对不起,年龄值不合法,请重新赋值!");
26 return; //直接终止程序的执行。
27 }
28 //程序能够执行到这里,说明年龄一定是合法的。
29 age = nianLing;
30 }
31
32 }