继承
概述
继承是描述java中类与类之间的关系的
继承什么时候用
当描述的多个事物之间存在包含(is a)关系的时候,如果对象之间存在“B”是“A”,可以使用继承,“B”继承“A”.如: 猫 extends 哺乳动物
继承语法格式
使用extends关键字表示,前面是子类,后面是父类
public class Son extends Father{
// ...
}
继承特点
- java中的类与类之间只能单继承,不能多继承,可以多层继承
- 子类拥有父类非private的属性和方法,子类可以直接使用父类(父类的父类)的内容
- 子类可以扩展父类没有的属性和方法
- 子类可以以自己的方式实现父类方法(方法重写)
- 父类的构造方法 静态方法不能被继承(可以用super()调用构造方法)
- java中所有的类直接或间接继承Object类
继承的好处与弊端
继承使得所有子类的公共部分都放在了父类,使得代码得到了共享,避免了重复,提升代码的复用性和维护性,同时也为多态提供了前提.
但是继承中,父类变化,子类不得不变.继承会破坏包装,父类的实现细节暴露给了子类,降低了独立性,提升了耦合性.继承是一种类与类之间强耦合的关系.
继承中成员变量的访问
就近原则
当我们在子类的方法中直接写一个变量名时,如果方法内有局部变量,优先使用局部变量,如果局部变量没有,会使用成员变量,如果成员变量没有,会使用父类非私有的成员变量;
- 如果想直接访问局部变量,直接写变量名
- 如果想直接访问本类的成员变量,需要写this.成员变量名
- 如果想直接访问父类的成员变量,如果父类没有私有,可以使用super.成员变量名,如果私有了,可以利用父类的get方法获取成员变量的值
继承中成员方法的访问
优先找子类,子类没有再找父类;