1.面向对象三大特征之一 ——封装
封装的概念:
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。用通俗的话来说,就是把尽可能多的东西藏起来,对外提供便捷的接口。
封装的两个大致原则:
- 第一,将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问;
- 成员变量为private,提供对应getter/setter方法。
实现封装的步骤:
- 第一步,修改属性的可见性,也就是设为private,防止错误的修改;
- 第二步,创建公有的getter/setter方法,用于属性的读写;
- 第三步,在getter/setter方法中加入属性控制语句,对属性值的合法性进行判断。
封装的好处:
- 便于使用者正确使用系统,防止错误修改属性;
- 有助于系统之间的松耦合,提高系统独立性;
- 提高软件的可重用性;
- 降低了构建大型系统的风险。
以下是部分使用了封装的代码的设计与实现:
2.类的访问修饰符
public修饰符:公有访问级别 / 默认修饰符:包级私有访问级别
作用域 修饰符 | 同一个类中 | 同一个包中 | 子类中 | 任何地方 |
private | 可以 | 不可以 | 不可以 | 不可以 |
默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |
3.static修饰符
静态变量(可以直接通过类名访问):
- 被static修饰的变量;
- 在内存中只有一个拷贝;
- 类内部,可在任何方法内直接访问静态变量;
- 其他类中,可以直接通过类名访问。
静态方法(可以直接通过类名访问):
- 静态方法中不能使用this和super;
- 不能直接访问所属类的实例变量和实例方法;
- 可直接访问类的静态变量和静态方法;
- 静态方法必须被实现(main()就是最常用的静态方法)。
静态代码块(当Java虚拟机加载类时,就会执行该代码块):
- 如果有多个静态块,按顺序加载;
- 每个静态代码块只会被执行一次。
4.继承
使用继承:
- 编写父类;
- 编写子类,继承父类(使用extends关键字)。
使用super关键字访问父类成员:
- super只能出现在子类的方法和构造方法中;
- super调用构造方法时,只能是第一句;
- super不能访问父类的private成员。
继承条件下构造方法的调用规则:
- 子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法,系统默认调用父类的无参构造方法;
- 子类构造方法通过super显式调用父类的有参构造方法,执行父类相应构造方法,而不执行父类无参构造方法;
- 子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则。
以下为验证继承的代码设计与实现: