继承是让类和类之间产生关系(子父类关系),产生继承关系后子类可以使用父类非私有的成员格式:此处是Dog类继承Animal类
Animal类是父类,也是基类、超类
Dog类是子类,也称为派生类
public class Dog extends Animal{
}
继承的好处和弊端
继承的好处:
? ? ? ? 提高了代码的复用性
? ? ? ? 提高了代码的维护性
? ? ? ? 让类与类之间产生关系,是多态的前提
继承的弊端:
? ? ? ? 增强了代码的耦合性(代码和代码之间存在关联都可称之为耦合)
? ? ? ? 继承是侵入性的
? ? ? ? 降低了代码的灵活性:继承关系导致子类必须拥有父类非私有的属性和方法
Java中继承的特点
Java只支持单继承,不支持多继承,但支持多层继承
比如儿子继承父亲,父亲继承爷爷,但儿子不能继承父亲的同时又继承爷爷
继承中变量的访问特点
在子类中访问一个变量采用的是就近原则
1子类局部范围查找,在方法栈内存中查找
2子类成员范围找,方法栈中找不到,因为对象嗲欧哦那个方法的联系,索引就到了该对象存在的堆内存空间
3父类成员范围找,说明子类对象堆内存空间持有了父类对象的堆内存空间地址
继承中成员方法的访问特点
先从子类成员范围找
再从父类成员范围找
this和super
this代表本类对象引用
super代表父类对象引用
方法重写
方法重写是子类出现了和父类中一摸一样的方法声明(方法名,参数列表,返回值类型)
父类中的私有方法不能被重写
父类中私有方法不能被重写
父类的非静态方法子类必须通过非静态进行重写
静态方法不能被重写,如子类有相同的静态方法可理解子类将父类的同名静态方法隐藏了起来,并不是方法重写
子类重写父类方时,访问权限必须大于等于父类
子类重写父类方法,方法名和参数列表必须相同
子类方法返回值类型应比父类方法返回值类型更小或相等
子类方法声明的异常应比父类方法声明的异常类型更小或相等
应用场景: ? ? ? ??当子类需要父类的功能,而子类又想有自己特有的内容,可以重写父类的方法。
//父类的method方法
public class Animal {
public void method(){
System.out.println("动物类");
}
}
//子类重写父类的method方法
public void method(){
super.method();
System.out.println("狗");
}
Override注解
用来检测当前的方法是否为正确重写的格式,起到校验作用
//如果不是正确的重写格式,Override注解会报错
@Override
public void method(){
super.method();
System.out.println("狗");
}
|