子类实例化时的超类的构造方法问题
来源:互联网 发布:excel成绩分析软件 编辑:程序博客网 时间:2024/04/30 14:24
class Animal{ Animal() { System.out.println("Animal's constructor "); } Animal(int num) { System.out.println("Animal's constructor"+num); }}class Mankind extends Animal{ Mankind() { System.out.println("Mankind's constructor "); } Mankind(int num) { System.out.println("Mankind's constructor"+num); }}public class kids extends Mankind { kids() { System.out.println("Kid's constructor "); } kids(int num) { super(num); System.out.println("Kid's's constructor"+num); } public static void main(String[] args) { System.out.println("start kids'constructor"); kids someKid1=new kids(); kids someKid2=new kids(999); System.out.println("end kids'constructor"); }}
start kids'constructor
Animal's constructor
Mankind's constructor
Kid's constructor
Animal's constructor
Mankind's constructor999
Kid's's constructor999
end kids'constructor
这个例子中,Kids继承了Mankid,Mankid继承了Animal.
形象的说,Animal是爷爷,Mankind是父亲,Kids3是儿子.
可以看到,在Kids somekid1=new Kids()创建对象时,Kids并不立刻运行自己的构造方法,而是首先输出其爷爷不带参数的构造方法,然后是父亲不低参数的构造方法,最后才是自己不带参数的构造方法(Kids真孝顺啊).
在Kid3 somekid2=new Kid3(999)创建对象时,当然,它调用自己带参数的构造方法,可是它不到用其父亲和爷爷的带参数构造方法,而是仍然调用其爷爷和父亲不带参数的构造方法!
可以这样理解,Kid3somekid2=new Kid3(999)只是指出超类不带参数的构造方法,但是不能指出要调用超类的哪个构造方法,所以只能调用超类不带参数的构造方法了.因为Kids创建对象时,不管是否带参数,都会自动调用超类不带参数的构造方法,所以,如果把超类Animal和Mankind的不带参数构造方法删除,那么上面的程序就会出现编译错误.解决这个问题有连个方法,其中一个是把超类Animal和Mankind的所有构造方法删除,这样系统会为它们提供不带参数的默认构造方法,另外一个方法就是在Kid3中使用super(int num)调用超类中的带参数的构造方法
- 子类实例化时的超类的构造方法问题
- Java继承,子类实例化时,调用父类的无参构造方法
- java中关于子类实例化时调用父类无参构造方法的问题
- 子类继承父类,那么子类实例化时对象调用的是父类还是子类的构造函数?
- 构造函数,密封类密封方法,子类调用父类的构造方法, Projector,类的实例化声明
- 关于子类和父类的构造方法的问题
- Java中子类和父类构造方法的问题
- 子类和父类构造方法的执行先后问题
- java中实例化子类时会不会调用父类的构造方法?
- 子类在new一个实例时,与父类构造方法的联系
- 父类中调用子类构造函数实例化子类的实现
- 父类中调用子类构造函数实例化子类的实现
- 父类中调用子类构造函数实例化子类的实现
- 有父类的子类实例化时,子类与父类的成员变量,构造函数,代码块的执行顺序
- 子类,父类构造方法的特点
- 父类和子类的构造方法
- 父类和子类的构造方法
- 子类继承父类的构造方法
- The pogo stick of NSRunLoop
- 常量指针 和 指针常量
- 一个简单的linux下c语言的计时程序(供新手参考)
- 多校第十场 HDU 3938 Portal(离线的并查集)
- 不同类型的变量在内存中存储的详细情况
- 子类实例化时的超类的构造方法问题
- C# ,webBrowser,登录,数据填充,模拟点击链接,运行JS函数
- Software Design Specification Templates
- 分享非常有用的Java程序 (关键代码) (三)---创建ZIP和JAR文件
- UNIX网络编程的回射服务器的改进步骤
- javaIO实例
- 关于VB 6.0 调用WebService
- localhost,127.0.0.1和ip区别
- Android-x86入门之--各类问题总结