继承
extends是拓展的意思,而不是继承。即子类是父类的拓展,子类是一种特殊的父类。(子类不能继承构造器)
继承父类例如
class Fruit { public String name; public void info() { System.out.println("名字叫"+name+"好吃"); } } class Apple extends Fruit { public static void main(String[] args) { Apple apple=new Apple(); apple.name="apple"; apple.info(); } }
很好理解
重写父类方法
class banana extends Fruit {
public void info() { System.out.println("名字叫"+name+"不好吃"); } }
名字叫香蕉不好吃
此事执行的就不是父类的info方法了,即子类覆盖了父类的方法,也叫方法重写Override
重写方法遵循“两同两小一大”
两同:方法名,形参列表
两小:返回值比父类返回值类型要小或者相等,异常规格要小或者相等
一大:子类的访问权限要比父类大或者相等
子类重写后,无法访问父类被隐藏的方法,不过可以使用“super”关键词或者使用“父类类名”调用被隐藏的方法。
class banana extends Fruit { public void info() { System.out.println("名字叫"+name+"不好吃"); } public void callSuper() { super.info(); } public static void main(String[] args) { banana b=new banana(); b.name="香蕉"; b.info(); b.callSuper(); } }名字叫香蕉好吃
如果父类的方法为private,则不叫重写,叫新方法