什么是继承
继承是面向对象三大特征之一,java中的继承描述的是两个类之间的关系,被继承的类称为父类,继承的类成为子类
继承使用关键字extends关键字来描述。在java里面只支持单继承及一个类只能有一个父类,子类可以继承的非private修饰的成员方法和成员变量,构造方法不能被继承
继承的优点有哪些
1:提高代码的复用性
2:提高代码的维护性:
3:让类与类之间产生关系,是多态的前提
示例如下:
测试类
运行结果如下
子类重写父类方法
方法重写需要满足的条件
1:重写方法和被重写方法必须具有相同的方法名。
2:重写方法和被重写方法必须具有相同的参数列表。
3:重写方法的返回值类型必须和被重写方法的返回值类型相同或是子类。
4:重写方法不能缩小被重写方法的返回值类型相同或是其子类。
5:重写方法不能缩小被重写方法的访问权限。
重载与重写的区别和联系
重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同。与返回值类型、访问修饰符无关。
super
super代表当前对象的直接父类对象的,默认引用。
1:super必须出现在子类的方法和构造方法中,而不是其他位置。
2:可以访问父类的成员,如父类的属性,方法,构造方法。
3:注意访问权限的限制,如无法通过super访问private成员。
结合上述代码如下
运行结果如下
继承条件下构造方法的调用规则
1:如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也没有通过this显示调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。在这种情况下,有没有"super();"语句,效果都是一样的。
2:如果子类的构造方法中通过super显示调用父类的有参构造方法,则将执行父类相应的构造方法,而不直接父类的无参构造方法。
3:如果子类的构造方法通过this显示显示调用父类的有参构造方法,则在相应构造方法中应用以上两条规则。
4:特别注意的是,如果存在多级继承关系,则在创建一个子类对象时,以上规则会多次向更高一级父类应用,一直到执行顶级父类。