博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中的继承:父类和子类的关系
阅读量:5975 次
发布时间:2019-06-20

本文共 1181 字,大约阅读时间需要 3 分钟。

一、父类引用指向子类对象时

 

1、若子类覆盖了某方法,则父类引用调用子类重新定义的新方法

2、若子类未覆盖某方法,则父类引用调用父类本身的旧方法

3、若子类覆盖了某属性,但父类引用仍调用父类本身的旧属性

4、若子类未覆盖某属性,则父类引用调用父类本身的旧属性

5、父类引用不能访问子类新定义的方法

 

二、子类引用指向自身对象时

 

 

1、若子类覆盖了某方法,则子类引用调用子类重新定义的新方法

2、若子类未覆盖某方法,则子类引用调用父类本身的旧方法

3、若子类覆盖了某属性,则子类引用调用子类重新定义的新属性

4、若子类未覆盖某属性,则子类引用调用父类本身的旧属性

5、子类引用可以访问子类新定义的方法

 

三、示例代码

 
B.java
[java]   
 
 
  1. public class B {  
  2.   
  3.     int a = 1;  
  4.     int b = 2;  
  5.   
  6.     void f1() {  
  7.         System.out.println("B.f1()");  
  8.     }  
  9.   
  10.     void f2() {  
  11.         System.out.println("B.f2()");  
  12.     }  
  13.   
  14. }  
C.java
[java]   
 
 
  1. public class C extends B {  
  2.   
  3.     int a = 3;  
  4.   
  5.     @Override  
  6.     void f1() {  
  7.         System.out.println("C.f1()");  
  8.     }  
  9.   
  10.     void f3() {  
  11.         System.out.println("C.f3()");  
  12.     }  
  13.   
  14.     public static void main(String[] args) {  
  15.   
  16.         B b = new C();// 父类引用指向子类对象  
  17.         b.f1();// 子类覆盖了该方法,所以父类引用调用新方法  
  18.         b.f2();// 子类未覆盖该方法,所以父类引用调用旧方法  
  19.         // b.f3();此行去掉注释会报错,父类引用不能访问子类新定义方法  
  20.         System.out.println(b.a);// 子类覆盖了该属性,但父类引用仍旧访问旧属性  
  21.         System.out.println(b.b);// 子类未覆盖该属性,父类访问旧属性  
  22.   
  23.         System.out.println();  
  24.   
  25.         C c = new C();// 子类引用指向自身对象  
  26.         c.f1();// 子类覆盖了父类方法,所以调用新方法  
  27.         c.f2();// 子类未覆盖父类方法,所以调用旧方法  
  28.         c.f3();// 子类调用自己新定义的方法  
  29.         System.out.println(c.a);// 子类覆盖了该属性,所以访问新属性  
  30.         System.out.println(c.b);// 子类未覆盖该属性,所以访问旧属性  
  31.     }  
  32. }  
输出:
[html]   
 
 
  1. C.f1()  
  2. B.f2()  
  3. 1  
  4. 2  
  5.   
  6. C.f1()  
  7. B.f2()  
  8. C.f3()  
  9. 3  
  10. 2  

转载于:https://www.cnblogs.com/Yxxxxx/p/6853672.html

你可能感兴趣的文章
(转)调整.NET控件WebBrowser的默认浏览器内核版本
查看>>
[导入]让你的WAP网站有更好的兼容性
查看>>
.NET Exceptionless 本地部署踩坑记录
查看>>
TOMCAT 的 CONTEXT
查看>>
航电OJ-2544最短路
查看>>
CF772E Verifying Kingdom
查看>>
雨林木风U盘装系统综合教程
查看>>
V-by-one
查看>>
让我欲罢不能的node.js
查看>>
python3基础知识学习记录
查看>>
10年.NET老程序员推荐的7个开发类工具
查看>>
C#核心编程结构(2)
查看>>
rename设计思想(Perl版)
查看>>
第二次冲刺 第七天
查看>>
矩阵之矩阵乘法(转载)
查看>>
Python _内置函数3_45
查看>>
cf-Igor In the Museum (dfs)
查看>>
数据之路 Day4 - Python基础4
查看>>
使用openCV打开USB摄像头(UVC 小米micro接口)
查看>>
Luogu P3577 [POI2014]TUR-Tourism
查看>>