一、封装性
1、含义
将对象的状态信息(属性)隐藏在对象内部,不允许外部程序直接访问对象的内部信息。而是通过该类所提供的方法来实现对内部信息的操作和访问。
2、权限修饰符
通过定义,我们知道要想把对象的属性隐藏在对象内部,就需要限定它的权限,所以要用到权限修饰符。
Java提供了4个访问控制级别,从大到小分别为:
public—>protected—>缺省(default)—>private
修饰符 | 类内部 | 同一个包 | 子类 | 任何地方 |
---|---|---|---|---|
private | ✔ | |||
(缺省) | ✔ | ✔ | ||
protected | ✔ | ✔ | ✔ | |
public | ✔ | ✔ | ✔ | ✔ |
二、继承性
1、特点
Java继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类(基类、超类)。
2、语法格式
修饰符 class SubClass extends SuperClass{
//类定义部分
}
SubClass 为子类,SuperClass为父类
3、注意点
- 子类继承父类后,父类中声明的属性、方法,子类就可以获取到。
- 当父类中有私有的属性或方法时,子类同样可以获取到,只是由于封装性的设计,使得子类不可以直接调用。
- 子类除了通过继承获取父类的结构之外,还可以定义自己特有的部分。
- extends:子类是对父类功能的“扩展”,子类不是父类的子集。
- Java中类的继承性是单继承,即一个类只能继承一个父类,但一个父类可以有多个子类。
三、多态性
1、多态性的表现
- 方法的重载与重写
- 子类对象的多态性
2、使用的前提
- 要有继承关系
- 要有方法的重写
3、格式
Person p = new Man();
(Man继承于Person)
注意点:
1. 编译时,认为p是Person类型的,故只能执行Person里才有的结构,即Man里特有的结构不能调用。
2. 子类对象的多态性,并不适用于属性。
4、向上(下)转型
- 向上转型
Person p = new Man(); - 向下转型
Man m = (Man)p;
向下转型要使用强转符() - 为了不报ClassCastException(类型转换异常),最好在向下转换之前,进行判断:instanceof
if (p instanceof Man){
Man m = (Man)p;
}
四、方法的重写vs重载
重写(override)与重载(overload)的区别
- 重载
①在同一个类中。
②方法名必须相同。
③方法的参数列表不同(参数个数不同或参数类型不同) - 重写
(前提:在继承的基础上,子类在获取了父类的结构之后,可以对父类中同名的方法进行“重构”。)
①方法的返回值,方法名,形参列表相同。
②权限修饰符的级别不小于父类中同名的方法。
③子类方法的异常类型不大于父类的。
④两个方法(子类和父类)要同为static或同为非static。