成员方法不重名
如果子类父类中出现不重名的成员方法,这时调用没任何影响,调用方法的时候回先在子类中查找,若有此方法就执行这个,若没有就去父类中查找此方法
成员方法重名—重写
若子类和父类出现方法重名,这时就出现特殊情况,这种叫重写
方法重写:
子类出现与父类一样的方法时(返回值类型、参数列表、方法名),就会覆盖父类中的该方法。称为重写【声明不变,重新实现】
重写的应用:
子类根据自己的需要添加属于自己的方法特性,既有父类的该方法名称又添加自己的功能
public class Phone{ //打电话 public void call(){ System.out.println("打电话!"); } //发短信 public void sendMessage(){ System.out.println("发短信!"); } //来电显示 public void show(){ System.out.prinyln("来电显示电话号码!") } } public class IPhone12 extends Phone{ //重写父类当中的来电显示功能,并增加自己的显示姓名和显示头像功能 public void show(){ //父类当中的功能保持不变 super.show(); //新增新功能 System.out.println("显示姓名!") System.out.println("显示头像!") } }
重写:方法名称、参数列表、返回值类型一样!前提是继承
重载:方法名称一样、参数列表不一样、返回值不参无所谓。当前类中
重写父类的方法,要求修饰符权限大于等于父类
覆盖父类方法,方法名称、返回类型、参数列表要一致
继承后的特点—构造方法
构造方法的定义和作用:
构造方法名和类名相同,所以子类不能继承父类的构造方法(继承后用:super() 来调用父类的构造方法)
构造方法一般是初始化成员变量,所以子类在初始化的过程中,必须先执行父类中的初始化动作。子类的构造方法当中默认有一个super()方法,表示调用的父类的构造方法,父类的成员变量初始化之后,才可以给子类使用。
父类空间优先于子类对象产生
在每次创建子类对象的时候,先初始化父类空间,再创建子类对象。目的在于子类对象中包含了其对应的父类空间,便可以包含父类的成员,如果父类成员非私有,则子类可以随意使用父类的成员,代码体现在子类的构造方法调用时,会先调用父类的构造方法。
原文:https://www.cnblogs.com/9080dlb/p/14033200.html