关闭

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

1384人阅读 评论(0) 收藏 举报
分类:

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。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:65962次
    • 积分:994
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:9篇
    • 译文:1篇
    • 评论:19条
    文章分类
    最新评论