子类与父类一旦产生了继承关系之后,实际上子类会继承父类中的全部定义,但是这里面也有可能出现不合适的场景,子类如果发现父类中设计不足并且需要保留有父类中的方法或者属性名称的情况下就会发生覆写。
方法的覆写
当子类定义了与父类方法名称相同,参数类型及个数完全相同(跟父类方法一模一样)的时候,就称为方法的覆写。
范例:观察方法覆写
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() ;
}
}
只要是在子类中调用父类方法的时候一定要在方法前追加有“super.方法()”。