继承
是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。
public claa 子类名 extends 父类名{}
继承中子类的特点是:
子类可以有父类的内容
子类还可以有自己特有的内容
继承的好处坏处
好处:
提高了代码的复用性(多个类相同的成员可以放到同一个类中)
提高了代码的维护性(如果方法的代码需要修改,修改一处即可)
坏处:
继承让类与类之间产生了关系,类对的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性
什么时候使用继承
继承中变量访问特点
继承中构造方法的访问特点
子类的所有构造方法都会默认访问父类的无参构造方法
因为子类会继承父类中的数据,可能还会使用父类的数据,所以子类初始化之前,一定要先完成父类数据的初始化(也就是为了完成初始化 )
每一个子类构造方法的第一条默认语句都是super();
继承中成员方法的访问特点
super
访问父类的成员变量
this.age //访问本类的成员变量age 也就是当前类
super.age//访问父类的成员变量age
内存图
方法重写
子类中出现了和父类一摸一样的方法声明,当子类需要父类的功能,而功能主体子类有自己持有额内容时,可以重写父类中的方法,这样既沿袭了父类的功能,又定义了子类特有的内容。
@Override
是一个注解
可以帮助检查重写方法的方法生命的正确性。
方法重写注意事项
1.父类中的私有方法子类不可能重写,也不能继承
前面没有public会有一个默认的修饰符,但是权限不如public高
2.子类重写父类的时候,访问权限不能比父类低,可以比父类高或一样
3.extends不能同时继承多个类,只支持单继承,可以多层继承,二字继承爸爸,爸爸继承爷爷
4.子类的有参构造会默认调用父类的参数
public Cat(String name,int age){
super(name,age)}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。