/**
* 在Java中的题目中有这么一道题目,抽象类是否可以继承实体类?
* Object这个实体类是所有类的父类,当然就应该包括了抽象类啊~
* 但是与大多数,一样就是什么叫做“前提是实体类必须有有明确的构造函数”
* 在网上也搜到了一篇讲解这个问题的,但是有点难理解,在原来作者的思路上添加了测试
* 分为2种情况:
* 第一种父类中的构造方法私有化:
* 私有化之后,eclipse报错是默认构造函数不可见
* 第二种父类中是带参的构造方法:
* 因为父类中申明了带参的构造函数,系统就不会默认赋予无参的构造函数了,此时报错同样的也是不可见的
*
* 也就是说,上述抽象类不能继承父类的原因是因为原有默认的无参的构造函数对抽象类是不可见的,或者说,子类中(抽象类中没有针对父类中构造函数的方法)
* 所有明确构造函数的意思应该是"父类中的构造函数对抽象类是可见的,或者说抽象类能够针对父类,在创建构造函数时,能够传入相应的参数"
* @author Administrator
*
*/
public class Test1 {
int a;
int b;
//第一种情况
// private Test1(){
//
// }
//第二种情况
// public Test1(int a,int b){
// this.a=a;
// this.b=b;
// }
}
abstract class B extends Test1{
/*第一种情况:(构造函数私有化)
* 假若将Test1中的构造函数设置为private,这个抽象类就报下面的这个错
* Implicit super constructor Test1() is not visible for default constructor. Must define an explicit constructor
* 隐式的父类的构造函数是默认构造函数test1()是不可见的。必须定义一个显式构造函数
*/
/*第二种情况(超类中是有参的构造函数)
* 这时会报
* Implicit super constructor Test1() is undefined for default constructor. Must define an explicit constructor
* 这个错误与上面一样,同样是找不到默认的构造函数->>但是加上了这个就不会报错了
* public B(int a,int b){
* super(a, b);
* }
*/
}
java招聘试题
最新推荐文章于 2021-02-15 16:50:10 发布