在看java继承这一块的时候发现了一个问题,即父类未被子类覆盖的方法是如何调用的?

是子类拥有了父类的该方法只是没有显示表示,还是子类调用了父类的该方法。

为此做了一下验证

代码如下:

public class One {protected void printA() {System.out.println("父类printA");}private void printB() {System.out.println("父类printB");}private void printC() {System.out.println("父类printC");}protected void printABC() {printA();printB();printC();}
}public class Two extends One {protected void printA() {System.out.println("子类printA");}private void printB() {System.out.println("子类printB");}public void printC() {System.out.println("父类printC");}public static void main(String[] args) {Two t = new Two();
//     One t = new Two();
        t.printABC();}
}

对于第一种情况:子类拥有了父类的该方法只是没 有显示表示

由于printABCD方法中调用了printA()、printB()、printC()、printD(),并且printB()在父类中是私有的,所以不可以被子类继承。如果是这种情况的话,应该会编译时报错。然而没有报错,显然不是第一种情况。

对于第二种情况:子类调用了父类的该方法

根据运行结果

这里就会有个疑问-如果是调用了父类方法为什么会printA会使用子类的方法呢?

事实上运行过程应该是这样的,子类在调用printABCD方法时因为自己没有重写这个方法,所以是调用父类的该方法。

即默认为

@Overrideprotected void printABCD() {// TODO Auto-generated method stubsuper.printABCD();}

调用父类printABCD后接着要执行printA()、printB()、printC()、printD()四个方法。其中子类只对printA()进行了覆盖,printB()没有进行覆盖,printC()、printD()不存在覆盖。因此在调父类的printABCD方法,在执行时如果判断内部执行的方法没有对父类的方法进行覆盖则使用父类的方法,否则使用覆盖后的方法。

转载于:https://www.cnblogs.com/liuleicode/p/4953892.html

Java中方法的继承以及父类未被子类覆盖的方法调用的问题相关推荐

  1. Java中是否可以继承String类,为什么

    详细解析: 1. 关于final修饰符 参考文章:  浅析Java中的final关键字 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的&qu ...

  2. Java中抽象类、接口、父类直接的区别与联系

    抽象类与接口的区别: 1)抽象类是一个只有变量或方法申明的类,这些变量(属性)和方法都是抽象类型的.抽象类没有对方法的实现. 2)接口则是一个只有方法申明.没有方法的实现,接口的方法也同样是抽象方法, ...

  3. java中如何实现继承_Java继承

    Java继承 1.什么是继承呢? 类似人类中的继承(继承上一辈.上上辈的东西),在Java中就是将一个已知的类进行拓展,让一个新的类来继承这个已知的类,这样就能使这个新的类具有已知类的属性和行为. 新 ...

  4. java多态父类引用指向子类对象为什么不能调用子类特有的方法?

    java多态父类引用指向子类对象为什么不能调用子类特有的方法? 我们在学习java面向对象时都会发现当父类引用指向子类对象不能调用子类特有的方法 首先我们需要了解一下java多态的具体体现 1.一个对 ...

  5. java中接口可以继承接口吗?

    java中接口可以继承接口吗? java中不允许类多重继承的主要原因是:如果A同时继承B和C,而假如B和C同时有一个d方法,A如何决定该继承哪一个呢? 但接口不存在这样的问题,接口中全都是抽象方法,继 ...

  6. Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

    Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 参考文章: (1)Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 (2)https://www.cnblog ...

  7. Java中接口如何继承接口呢?

    转自: Java中接口如何继承接口呢? 下文讲述一个接口继承另一个接口的实现方式,如下所示: 实现思路:接口继承接口,采用的extends关键字 例:   接口继承接口的示例分享 interface ...

  8. 16.实现多个具有相同方法的接口和父类与实现接口有相同方法

    一.实现多个具有相同方法的接口 这种情况还是比较少会遇到的,但事实是存在这样的问题,所以写下解决的方法: 使用内部类: interface InterA { void f(); }interface ...

  9. java多态 成员访问特点(父类引用指向子类对象)

    >父类 子类  package com.dareway.demo;public class Father {public String index="fatherLogo"; ...

最新文章

  1. 【冰极峰教程系列之二】:牢不可破的九宫格布局
  2. Xamarin.Android提示aapt退出,代码为255
  3. docker zookeeper kafka kafka-manager 本地hbase hadoop
  4. [转]Spark能否取代Hadoop?
  5. Keyword-BERT——问答系统中语义匹配的杀手锏
  6. nextdate函数白盒测试问题 软件测试_软件测试基本常识
  7. 学生管理系统服务器端设计,学生信息管理系统设计与实现
  8. vue获取上传进度_vue通过input选取apk文件上传,显示进度条
  9. 测试用例管理工具-TestLink
  10. Matlab小波变换-音频去噪
  11. 提高迅雷下载速度 超好用,下载速度实实在在的提高了!
  12. 今日新闻快讯摘要十条
  13. Trying to start MapKit location updates without prompting for location authorization. Must call -[CL
  14. 微信小程序的登录界面实现
  15. 51单片机的花卉、农田自动浇水灌溉系统开发,Proteus仿真,原理图和C代码
  16. 使用Python写一个天天酷跑
  17. 神经网络模型结果怎么看,图像识别神经网络模型
  18. 【学习笔记】刚体角速度的唯一性问题
  19. 全网最全fiddler使用教程和fiddler如何抓包(fiddler手机抓包)-笔者亲测
  20. 谁有比按键精灵更好的模拟软件?

热门文章

  1. 【spring cloud】注解@SpringCloudApplication和@SpringBootApplication的区别
  2. SpringCloud和SprigBoot之间的依赖关系怎么看
  3. oracle po:默认申请分组,PR自动创建PO采购订单:强制按照PR行进行分组
  4. Java容器坐标起点_Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点...
  5. ux和ui_设计社交餐厅策展应用程序— UX / UI案例研究
  6. 字节3-1前端面试官自学Vue的正确姿势
  7. 【前端工程师手册】说清楚JavaScript中的相等性判断
  8. Deep Learning(深度学习)学习笔记整理(二)
  9. iOS 时间戳的转换
  10. 298. Binary Tree Longest Consecutive Sequence