Java程序设计入门教程--对象的创建过程

错误示例程序

继承情况下对象的创建过程示例程序。

 

示例程序解析

       本例不能正确通过Java编译,出现如上所示错误,原因在于执行Square的构造方法时出错。

       Java规定子类构造方法在真正被执行之前,需回溯执行父类的构造方法。

       由于该Square类是Rectangle类的子类,系统在执行:Square square= new Square (10);时,首先执行父类Rectangle类的构造方法,缺省情况下是执行父类的空构造方法,而此例Rectangle类中已经定义了显式的Rectangle (int a,  int b)型的构造方法,所以系统将不再为Rectangle类生成缺省的空构造方法,这样程序运行时就找不到匹配的父类空构造方法。

解决方案一


为父类添加空构造方法

class Rectangle {  
   ...
   Rectangle ( ) { }   //方法一:添加空构造方法
   Rectangle (int a,  int b){width =a;    height=b;}
   ...
}


解决方案二


子类的构造方法中明确指明需执行的父类构造方法的类型
class Square extends Rectangle {
    ...
    public Square(int a)
    {   super(a,a);  ... } //方法二:指明执行的父类特定构造方法
    ...
}
 

猜你喜欢

转载自blog.csdn.net/u010764893/article/details/131140135