上一篇:方圆之内-继承相关限制 | 带你学《Java面向对象编程》之三十八
【本节内容】
通过阅读本节内容,你将了解到在继承父类时涉及到的新概念-覆写,并对其有一个较为全面的认识,学会如何实现覆写以达到某些实际需求。
子类与父类一旦产生了继承关系之后,实际上子类会继承父类中的全部定义,但是这里面也有可能出现不合适的场景。
子类如果发现父类中设计不足并且需要保留有父类中的方法或者属性名称的情况下就会发生覆写。
方法的覆写
当子类定义了与父类方法名称相同,参数类型及个数完全相同(跟父类方法一模一样)的时候,就称为方法的覆写。
范例:观察方法覆写
class Channel {
public void connect() {
System.out.println(“【Channel父类】进行资源的连接。”) ;
}
}
class DatabaseChannel extends Channel { //要进行数据库的连接
public void connect() { //保留已有的方法名称,而后进行覆写
System.out.println(“【子类】进行数据库资源的连接。”) ;
}
}
public class JavaDemo{
public static void main(String args[]) {
DatabaseChannel channel = new DatabaseChannel () ;
channel.connect() ;
}
}
执行结果:【子类】进行数据库资源的连接。
由于现在实例化的是子类(DatabaseChannel)对象,所以此时调用的方法一定是被子类所覆写过的方法,如果该方法没有被覆写过,那么将调用父类中提供的方法,覆写的意义是在于:优化父类的功能。
图一 人与职业的关系图
在子类进行方法覆写之后,如果现在要想继续调用父类中的方法,那么就必须使用“super.方法()”。
class Channel {
public void connect() {
System.out.println(“【Channel父类】进行资源的连接。”) ;
}
}
class DatabaseChannel extends Channel { //要进行数据库的连接
public void connect() { //保留已有的方法名称,而后进行覆写
super.connect() ; //直接调用父类中的方法
System.out.println(“【子类】进行数据库资源的连接。”) ;
}
}
public class JavaDemo{
public static void main(String args[]) {
DatabaseChannel channel = new DatabaseChannel () ;
channel.connect() ;
}
}
执行结果:
【Channel父类】进行资源的连接。
【子类】进行数据库资源的连接。
只要是在子类中调用父类方法的时候一定要在方法前追加有“super.方法()”。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学