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

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

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

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

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

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

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

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

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

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

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

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

三、示例代码

B.java
[java] view plaincopy
  1. public class B {
  2. int a = 1;
  3. int b = 2;
  4. void f1() {
  5. System.out.println("B.f1()");
  6. }
  7. void f2() {
  8. System.out.println("B.f2()");
  9. }
  10. }

C.java

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

输出:

[html] view plaincopy
  1. C.f1()
  2. B.f2()
  3. 1
  4. 2
  5. C.f1()
  6. B.f2()
  7. C.f3()
  8. 3
  9. 2

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

Java中的继承:父类和子类的关系相关推荐

  1. Java中List的父类与子类如何转换

    A是B的子类,但List不是List的子类.所以想直接转换是不行的. 一.子类转父类 List<A> childList = getxxxxxx; List<B> dadLis ...

  2. java多态性详解——父类引用子类对象

    Java的多态性 面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作 ...

  3. java中父类与子类的关系以及使用

    java中父类与子类的关系以及使用 在java中规定:一个父类可以有多个子类,但是一个子类只能有一个父类.子类可以通过extends关键字来继承父类.做个比较通俗的比喻,就像一个父亲可以有多个亲孩子, ...

  4. java子类继承父类_子类可以继承父类的什么

    展开全部 子类可以获得除private权限以外的所有父类属性,但是: 1.在子类继承62616964757a686964616fe58685e5aeb931333431343130父类的时候,子类必须 ...

  5. java中父类和子类_java中父类和子类的关系

    子类继承父类,子类中就拥有父类的所有属性和方法.在创建子类的实例的时候,父类和子类到底是如何执行的呢?还有静态代码块和非静态代码块和构造方法的执行顺序? 1.先执行父类的静态代码块,然后再子类静态代码 ...

  6. java 的继承_关于java中的继承

    我们都知道Java中的继承是复用代码.扩展子类的一种方式,继承使得Java中重复的代码能够被提取出来供子类共用,对于Java程序的性能以及修改和扩展有很大的意义,所以这是一个非常重要的知识点. 那么对 ...

  7. java中的继承(一)

    在java中,所有的类都有一个默认的父类Object,即使我们没有显式的去继承这个类.在Object类中定义了一些方法,其中有几个方法是我们必须掌握的,比如equals方法,hashCode方法,wa ...

  8. 015——继承(来 , 看看Java中的继承关系)

    目录 继承 继承概述.使用继承的好处 什么是继承 使用继承的好处 继承后子类的特点? 案例演示 继承的设计规范.内存运行原理 继承的设计规范 为什么 内存运行原理 继承的特点 子类是否可以继承父类的构 ...

  9. Java中 利用继承的思想实现动物的分类,将动物分为水生动物和陆生动物,有其动物的属性和特征,又有其属性和特征,编程模拟。

    Java中 利用继承的思想实现动物的分类,将动物分为水生动物和陆生动物,有其动物的属性和特征,又有其属性和特征,编程模拟. 前言 动物在拥有自己本身所具有的特征的同时,还应该具有所在大类所具有的动物特 ...

  10. Java中的继承 与 多态(中)

    先导: 我们在<Java中的继承 与 多态(上)>当中讲解了如下几个问题,  1.继承是什么   2.super关键字   3.特殊考点-父子类中不同代码块的实现顺序 所以现在我们对于继承 ...

最新文章

  1. 01--MySQL自学教程:数据库MySQL安装和校验
  2. 轻松处理高于平常10倍的视频需求,还能节省60%的IT成本,蓝墨做对了什么?
  3. 百度Java电面一面面经
  4. java胜任理由_Java在几乎所有方面均能胜任本机响应
  5. C#通过反射动态加载dll,读取module、类、方法、特性,并通过反射+简单工厂+配置文件 实现ioc
  6. Ubuntu 为普通用户添加sudo权限
  7. CA的建立与证书的颁发
  8. 《高效对话》— 综合素质提升书籍
  9. Free Ebook #1
  10. 孙鑫VC学习笔记:第十三讲 (二) 设置文档标题
  11. 逻辑卷、物理卷、卷组
  12. android随机摇号代码,抽奖摇号系统随机性算法介绍
  13. 三菱plc pwm指令_学会了这27条基本逻辑指令,你离熟练编程三菱PLC又近了一步!...
  14. MySQL数据库卸载手册
  15. Eclipse启动问题:An error is occurred
  16. HDU 5058 So easy (set容器大法好)
  17. Cocos2dx游戏教程(序):火爆抖音的网红口红机真能扎到口红吗?
  18. 将一个数组中重复的元素去除,并且返回一个新数组
  19. 创业思维分享优点(创业方法创业思维)
  20. 信息资源物理服务器包括什么,信息资源数据库

热门文章

  1. 用ASP+DLL实现WEB方式修改服务器时间
  2. 关于CSS 里的_width是什么意思???
  3. [破解] DRM-内容数据版权加密保护技术学习(中):License预发放实现
  4. 大牛养成指南(3):天天写业务代码,如何成为技术大牛?
  5. iOS_网络_02_搭建本地Web服务器
  6. 运维工程师必须掌握的技巧
  7. linux常用命令(1)——文件管理
  8. VMware vSphere 5.1 群集深入解析(二十九)-故障排错
  9. java: cannot execute binary file问题的解决
  10. 如何停止Linux系统中占用CPU 100%的进程