java招聘試題

/**
 * 在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);
	 * }
	*/
	
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章