java 抽象類 和介面 建構函式

2021-05-23 02:04:07 字數 1604 閱讀 2378

1、抽象類和介面有什麼區別

抽象類特徵如下:

抽象類和抽象方法都必須用abstract關鍵字修飾

抽象類不能被例項化,也就是不能用new關鍵產生物件

抽象方法只需宣告而無需事先

抽象方法必須定義的抽象類中,抽象類的子類必須實現父類中的抽象方法,否則這個子類還是個抽象類

介面的特徵

介面內有構造方法

介面中宣告變數均為final,static,和public得

介面中定義的方法均為抽象的和公共的

介面裡的資料成員必須初始化,且資料成員均為常量

inte***ce truck

inte***ce bus

inte***ce car extends truck, bus

class cart implements car

public string getproduction()

public cart(string name, string production)

public void sound()

}建構函式

注意:1建構函式具有和類名相同的名稱。

2他沒有返回值,也沒有返回型別

3 每個類可以有多個建構函式,即建構函式可以過載

4建構函式在建立物件時自動執行,一般不能顯示的呼叫

5構造方法不能重寫,也就是子類不能繼承父類的構造方法

6子類繼承父類時,會先自動呼叫父類的無參構造方法,為父類成員賦初值

關於建構函式下面哪些是正確的?

1super()或this()必須放在建構函式的第一句

2如果父類的建構函式沒有引數,那麼子類的建構函式一定沒有引數

3 建構函式不能被繼承

4建構函式不能被重寫

正確的為13

找出下面**的錯誤位置

/*在同乙個類的不同構造方法中呼叫該類的其他構造方法需要使用this(...)

* 的形式,而且必須是在構造方法的第一行呼叫,this(name,age);此句錯誤在於把成員

* 變數作為引數被建構函式引用,構造方法是乙個類物件例項化的起點,例項化的目的就是為

* 了給類成員初始化,所以引用的引數值應該是常量而不是變數,因此構造方法中

* 不能將成員作為引數引用*/

class woman

public woman(string n, string a)

public woman(string n, string ar, int a)

}/*如果子類中指定了呼叫父類中的哪個建構函式,則不再呼叫預設的無參建構函式,

super必須放在第一句,是因為子類需要先初始化父類*/

public class testclass

}class fatherclass

fatherclass(int i)

}class sonclass extends fatherclass

sonclass(int i)

}輸出:

建立父類物件:

父類的建構函式

建立第乙個子類物件:

父類的建構函式2

子類的第乙個建構函式

建立第二個子類物件:

父類的建構函式

子類的第二個建構函式

Java 介面和抽象類

介面,inte ce,介面泛指供別人呼叫的方法和函式。介面的形式 public inte ce inte cename 介面的特點 1 介面中可以含有變數和方法。2 其中變數被隱式的指定為public static final 變數並且只能是這種變數。3 介面的方法隱式的指定為public abst...

java抽象類和介面

抽象類 乙個類中只要有乙個抽象方法 那麼這個類就必須是抽像的 抽象類必須要進行例項化 public abstract class animal class cat extends animal 介面 從本質上講介面是一種特殊的抽象類 介面中所有的方法都是抽象的 並且介面中的成員都是public 介面...

Java抽象類和介面

含有abstract修飾符的class即為抽象類,abstract類不能建立的例項物件。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。abstract class 類中定義抽象方法必須在具體 concrete 子類中實現,所以...