后浪拍前浪-覆写父类方法 | 带你学《Java面向对象编程》之三十九

简介: 既然出现了继承的关系,那么就存在子类和父类的联系,而在子类之中有可能定义和父类完全相同的方法或属性的名称,这个时候就称为覆写。

上一篇:方圆之内-继承相关限制 | 带你学《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)对象,所以此时调用的方法一定是被子类所覆写过的方法,如果该方法没有被覆写过,那么将调用父类中提供的方法,覆写的意义是在于:优化父类的功能。

image.png
图一 人与职业的关系图

在子类进行方法覆写之后,如果现在要想继续调用父类中的方法,那么就必须使用“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的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:规则之间-方法覆写限制 | 带你学《Java面向对象编程》之四十
更多Java面向对象编程文章查看此处

相关文章
|
1天前
|
安全 Java 机器人
解决Java中的NumberFormatException异常的实用方法
解决Java中的NumberFormatException异常的实用方法
|
23小时前
|
缓存 监控 Java
Java中的内存泄漏及其排查方法
Java中的内存泄漏及其排查方法
|
1天前
|
Java
java反射-动态调用方法(无参无返回值、有参无返回值、有参有返回值)
java反射-动态调用方法(无参无返回值、有参无返回值、有参有返回值)
4 0
|
1天前
|
Java
java反射-获取类的属性、构造方法、方法
java反射-获取类的属性、构造方法、方法
3 0
|
1天前
|
自然语言处理 负载均衡 Java
Java中的微服务架构实现方法*
Java中的微服务架构实现方法*
|
1天前
|
Java 机器人 编译器
解决Java中的NoSuchElementException异常的常见方法
解决Java中的NoSuchElementException异常的常见方法
|
1天前
|
Java 机器人 测试技术
解决Java中的AssertionError异常的常用方法
解决Java中的AssertionError异常的常用方法
|
1天前
|
Java 机器人 程序员
解决Java中的IllegalThreadStateException异常的方法
解决Java中的IllegalThreadStateException异常的方法
|
1天前
|
算法 Java 机器人
解决Java中的InvalidAlgorithmParameterException异常的方法
解决Java中的InvalidAlgorithmParameterException异常的方法
|
1天前
|
Java 机器人 程序员
解决Java中的MissingResourceException异常的常见方法
解决Java中的MissingResourceException异常的常见方法