java,构造函数内部的多态行为

原创 2013年12月02日 15:05:14

1)java类必须要有构造函数,在java中,private方法被自动认为是final方法,而且对子类是屏蔽的,也就是说子类对父类的继承,是不能重写private方法的,如果是同名,且参数类型和个数都相同时,不是重写,而是一个新的方法。

2)定义父类Glyph

父类中的draw()方法是可以重写的

package cn.javass.user;

public class Glyph {
  void draw(){System.out.println("Glyph.draw()");};
 
  Glyph() {
 System.out.println("Glyph() before draw()");
 draw();
 System.out.println("Glyph() after draw()");
  }
}

3)定义子类RoundGlyph

package cn.javass.user;


public class RoundGlyph extends Glyph{

 private int radius=1;
 RoundGlyph(int r) {
  // TODO Auto-generated constructor stub
  radius=r;
  System.out.println("RoundGlyph.RoundGlyph(),radius="+radius);
 }
 void draw(){
  System.out.println("RoundGlyph.draw(),radius="+radius);
 }
 
 public static void main(String[] args) {
  new RoundGlyph(5);
 }
}

4)运行结果如下

Glyph() before draw()
RoundGlyph.draw(),radius=0
Glyph() after draw()
RoundGlyph.RoundGlyph(),radius=5
5)子类重写了父类的draw()方法,在父类的构造函数中,有一个多态的方法draw(),在调用draw()时,子类还没初始化,所以radius为0。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java构造函数内部的多态行为可能带来的问题

《Thinking in Java》 Java构造函数的初始化顺序 在所有事情发生之前,将该类以及其基类的所有对象分配的存储空间初始化为二进制的零。比如int类型会分配为0,对象会被初始化为null...

java 构造器内部的多态方法和行为

今天看Thinking In Java,多态这一章,发现了一个以前纠结我很长时劲啊的错误,就是一个类编程对象,他到底是怎么一步步初始化的,今天这个谜底得意解开,下面开始正题。    ...

Java构造器内部的多态方法的行为

在一般的方法内部,动态绑定的调用是在运行时才决定的,因为对象无法知道它是属于方法所在的那个类,还是属于那个类的导出类。如果要调用构造器内部的一个动态绑定方法,就要用到那个方法的被覆盖后的定义。但是这个...

Java中构造器内部的多态方法的行为

这篇文章主要讨论的是,若在一个构造器中调用正在构造的对象的某个动态绑定的方法时会出现的情况。在此之前,我们需要知道构造器是如何在复杂的层次结构中运作的,尽管构造方法并不具有多态性,因为它们实际上是st...

JAVA 构造函数 调用 多态的成员方法 的问题

在构造器中调用多态方法进行初始化,也许会产生不可预料的结果。 [java] view plaincopy import java.io.FileWriter;   import ...

Java 面向对象(封装、继承、多态+面向对象、构造函数、静态代码块)

Java面向对象 面向对象概念 类与对象的关系 封装 构造函数 this关键字 static关键字 单例设计模式 1.       面向对象概念 1.1    理解面向对象 面向对象是相对面向过程...

Java基础-构造函数,覆写父类方法,多态及动态绑定,抽象类和Object类的运用

Java构造函数,覆写父类方法,多态及动态绑定,抽象类和Object类的运用

JAVA构造函数内调用多态方法

看如下程序代码段: public class Test1 { public static void main(String[] args) { A b = new B(); ...

主题:构造方法内部的多态方法的行为

昨天在一群里看到如下一段代码,让我郁闷了一下午:  class Super{    int i = 10;    public Supper(){       print();  ...

构造器内部的多态方法的行为详解(附源码)

前言       构造器调用的层次结构带来了一个有趣的两难问题。如果在一个构造器的内部调用正在构造的对象的某个动态绑定方法,那会发生什么情况呢?在一般的方法内部,动态绑定的调用是在运行时才决定的,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)