package com.neusoft.bbs.oop;
public class SubDynamicStatus extends DynamicStatus{
public SubDynamicStatus() {
add();
}
public static void main(String[] args) {
/**
* outputs:
* SubDynamicStatus.add()
* SubDynamicStatus.add()
*/
new SubDynamicStatus();
}
public void add(){
System.out.println("SubDynamicStatus.add()");
}
}class DynamicStatus {
public DynamicStatus() {
add();
}
public void add(){
System.out.println("DynamicStatus.add()");
}}能否讲一下在DynamicStatus中会调用子类的add()方法。
new SubDynamicStatus()->SubDynamicStatus()->DynamicStatus()->SubDynamicStatus.add()
|
|->SubDynamicStatus.add()
没找到解释
add();
}
调用构造方法,该方法首先调用 super();
也就是父类的构造方法 public DynamicStatus() {
add();
}
因为父类中也调用了add(),但现在调用该方法的实际是子类,所以实际调用的是子类的add方法。调用完成返回子类的构造方法,又调用了一次add()记住,不要再构造方法中调用可能被重写的方法,会给程序带来很多问题。
add();
}就这一个地方需要说明,此处的add是子类的add别的没啥问题。OVER
add(); //这个地方调用的是子类的方法;
}
调用父类的则需要 : super!
多态搞懂了,java就差不多了。呵呵
System.out.println("DynamicStatus.add()");
System.out.println("SubDynamicStatus.add()");
先会隐式的调用父类的构造方法..等于super();
但是父类里面的add()方法调用的是子类还是父类还没试。。
应该是多态性之一吧。
声明 DynamicStatus类型,调用子类的add()方法,
能否說說你的見解
因为 private 是私有的 不能被继承 父类中有add()方法 肯定是调用本类中的方法 如果没有 会报错的。