Java,在构造器里调用多态方法

class Glyph {

void draw() { System.out.println("Glyph.draw()"); }

Glyph() {

System.out.println("Glyph() before draw()");

draw();

System.out.println("Glyph() after draw()");

}

}

class RoundGlyph extends Glyph {

private int radius = 1;

RoundGlyph(int r) {

radius = r;

System.out.println("RoundGlyph.RoundGlyph(), radius = " + radius);

}

void draw() {

System.out.println("RoundGlyph.draw(), radius = " + radius);

}

void superDraw(){

super.draw();

}

}

public class PolyConstructors {

public static void main(String[] args) {

RoundGlyph rg = new RoundGlyph(5);

rg.superDraw();

}

}

这样一段代码,执行结果是这样的:

Glyph() before draw()

RoundGlyph.draw(), radius = 0

Glyph() after draw()

RoundGlyph.RoundGlyph(), radius = 5

Glyph.draw()

Thinking In Java中有一句话

Glyph.draw()方法设计将要被覆盖,这种覆盖是在RoundGlyph中发生的。(这里都OK)但是Glyph构造器会调用这个方法,结果导致了对RoundGlyph.draw()的调用。

这句话我就不太明白了,①为什么Glyph的构造器会去调用子类的draw方法而不去调用自己的draw方法呢?重写明明是在子类中发生的呀,父类中的draw方法并没有被重写吧(看我后来又调了super.draw,结果也是父类中的draw方法)。

常见的多态代码是向上转型,把一个子类的实例赋值给父类的引用,这时候产生多态,这个我知道。但是②这个多态是怎么产生的呢?

主要就是①②这两个问题

相关阅读:

git 如何把云端的代码同步到本地!?

zepto做动画效果有什么好的解决方法没

用户不在当前标签页面改变title?

secure file transfer怎么保存登陆密码

项目里一个功能出错

关于用python做国际化的一个疑问

smarty模板引擎原理有段代码不明白

两列布局中 左20% 右80% 为什么还能够换行? amazing

centos7.1编译安装nginx1.95+php7+mariaDB10.1?

flyway 无法识别sql,Unable to scan for SQL migrations in location。

可以给kvm虚拟机增加kvm_intel模块吗?

请问下这里的 call 和 apply 怎么理解

LocalResizeIMG.js在iphone下上传图片旋转了90度,如何解决

安卓微信浏览器内设置viewport不生效,如何解决?

iterm2配色问题

单链表实现问题

js检测横竖屏,页面会闪一下,求解~

CharacterEncodingFilter 类

如何在if条件里配置access_log文件

php如何去除字符串中由于字节丢失造成的乱码字符

java draw 方法调用_java,_Java,在构造器里调用多态方法,java - phpStudy相关推荐

  1. java中多态案例工厂类,Java中构造器内部的多态方法的行为实例分析

    本文实例讲述了Java中构造器内部的多态方法的行为操作.分享给大家供大家参考,具体如下: 这篇文章主要讨论的是,若在一个构造器中调用正在构造的对象的某个动态绑定的方法时会出现的情况.在此之前,我们需要 ...

  2. 构造器内部的多态方法的行为(在构造器内调用正在构造的对象的某个动态绑定方法)

    初始化的实际过程: 1.在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的零. 2.先调用基类的构造器.此时,调用被覆盖后的draw()方法(注意这一步是在调用子类RoundGlyph的构 ...

  3. 在构造器里调用可重写的方法有什么问题?

    问题:在构造器里调用可重写的方法有什么问题? 我有一个检票页面的类通过抽象方法的结果去去设置页的标题 public abstract class BasicPage extends WebPage { ...

  4. java反射方法调用_Java反射(3)调用方法

    目录: 1.访问方法(Method)对象的方法汇总 2.获取方法(Method)对象中的值 3.设置方法(Method)对象中的值 1.访问Method的方法汇总 以下四种方法在Class类可以返回关 ...

  5. java 反射创建对象并赋值_java使用反射创建并操作对象的方法

    Class 对象可以获得该类里的方法(由 Method 对象表示).构造器(由 Constructor 对象表示).成员变量(由 Field 对象表示),这三个类都位于 java.lang.refle ...

  6. eclipser认java源码_java相关:Eclipse查看开发包jar里源代码的方法

    java相关:Eclipse查看开发包jar里源代码的方法 发布于 2020-5-21| 复制链接 摘记: Eclipse查看开发包jar里源代码的方法前言:最近我打算学习一下谷歌的类库Guava,下 ...

  7. java类的静态成员初始化_Java类的初始化顺序 (静态变量、静态初始化块、变量、初始......

    很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...

  8. java对类对象初始化_Java类和对象初始化

    Java类和对象初始化Tag内容描述: 1.解析 Java 类和对象的初始化过程 由一个单态模式引出的问题谈起 北京高伟达西南分软 Java EE 软件工程师 三年 Java EE 项目经验 行业方向 ...

  9. java 和c 多态比较_多态在 Java 和 C 编程语言中的实现比较

    2011 年 12 月 22 日发布 众所周知,多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定.C++ 和 Java 作为当前最为流行的两种 ...

最新文章

  1. 二十、SPI设备驱动及应用(一)
  2. Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化
  3. CSS3 border-radius妙用
  4. mysql主从配置 windows_windows实现mysql主从配置
  5. sklearn自学指南(part41)--使用手册的目录
  6. java内存模型概述_Java内存模型-快速概述和注意事项
  7. ehcache缓存原理_干掉GuavaCache:Caffeine才是本地缓存的王
  8. 洛谷 P1396 营救
  9. lnmp之PDO_mysql.so
  10. 【故障诊断分析】基于matlab FFT轴承故障诊断【含Matlab源码 1397期】
  11. 小强升职记思维导图_思维导图之《小强升职记》
  12. java三角形角度_利用java解决三角形角度问题
  13. 无线AP配服务器,cisco思科无线ap设置步骤
  14. 我什么计算机作文600字,我是电脑迷作文600字
  15. FMI飞马网IT书籍赠送:参加获奖就送智能技术/软件开发/Web技术/数据科学计算机科学/网络技术/IT文化与互联网
  16. (2)防火墙的基本配置---1安全域和端口
  17. cygwin里安装apt-cyg网络工具及使用
  18. 互联网内容安全中的音频审核应该怎么做好
  19. 最近迅雷 4.0正式发布!教你轻松精简你的迅雷4.0~
  20. vue整合百度地图(关键字检索)

热门文章

  1. 腾讯基础设施 20 年演进之路
  2. 全新 AI 语音芯片、双麦 AIoT 模组,科大讯飞硬核技术助力智能家电创新
  3. 众说纷“云”,看生态驱动工业物联网落地
  4. 评分 9.7!这本 Python 书彻底玩大了?程序员:满分!
  5. 故宫网站遭“围攻”!
  6. 程序员的绩效到底是应该衡量项目,还是改 Bug 量?
  7. 硅谷再不是程序员们的梦想天堂了
  8. 区块链和比特币的 6 个神话:揭穿了这项技术的有效性
  9. 微信官方都辟谣,可真有技术人用 AI、大数据实现头像添加圣诞帽了!
  10. 十大最受欢迎的 React Native 应用开发编辑器