1. 程式人生 > 其它 >java_DAY14:介面和抽象類

java_DAY14:介面和抽象類

1:抽象類和普通類的區別

1:抽象方法介紹

當父類的某些方法不確定時,或者每一個子類都有不同的表現形式的時候,可以用abstract關鍵字來修飾該方法。

被abstract修飾,沒有方法體的方法,就叫抽象方法,

特點:

1、抽象方法沒有方法體,只有方法的宣告

2、如果一個類中存在抽象方法,那麼這個類必須要宣告為抽象類

如果父類中有一個方法,每一個子類都有不同的實現,此時可以將這個方法宣告為抽象方法,抽象方法是沒有方法體的,只是一種規範。

Pet類中的toHospital() 方法不需要具體的實現,而且實現後沒有任何意義,此時可以將Pet類中的toHospital()宣告為抽象方法;

什麼是抽象方法:被abstract修飾的方法,就是抽象方法。

1、抽象類為什麼不能例項化?- 不能例項化,抽象類中可能會存在抽象方法,抽象方法是不完整的方法,沒有方法體,如果被呼叫,完全沒有意義

2、抽象類中是否可以存在構造方法? - 可以存在,他不能例項化,構造方法有什麼用? -- 留給子類呼叫的

3、抽象類和抽象方法的關係? - 抽象方法必須在抽象類中進行宣告,抽象類中可以存在抽象方法,也可以不存在

4、什麼是抽象類? - 被abstract修飾的類就是抽象類,特點:不能例項化

5、抽象類能不能繼承普通類? - 可以。

6、普通類能不能繼承抽象類? - 可以

7、抽象方法和普通方法的的區別!

1、抽象方法沒有方法體,普通方法一定要有方法體

2、抽象方法一定要有abstract修飾,普通方法一定不能有

3、抽象方法只能在抽象類中,普通方法既可以在抽象類中也可以在普通類中

4、被繼承時,抽象方法必須要被子類重寫,普通方法沒有要求

8、抽象類和普通類的區別?

1、抽象類不能被例項化,普通類可以

2、抽象類需要有abstract修飾,普通類不能

3、抽象類可以有抽象方法,普通類一定不能存在抽象方法

9、是否存在抽象的構造方法? - 不存在,

10、是否存在抽象的靜態方法? - 不存在

11、抽象類中是否存在靜態方法? - 可以存在的,靜態方法不需要物件來呼叫,直接通過類名既可以直接訪問

12、關於繼承,跟是否抽象無關,都可以互相去繼承

語法:方法體,呼叫

特徵:

1:抽象方法沒有方法體,只有方法的宣告;

2:如果一個類中存在抽象方法,那麼這個類必須宣告為抽象類;abstact修飾的類,抽象類不能建立物件

3:抽象類不能被例項化;

4:抽象方法必須在子類中被重寫,除非子類也是抽象類;

如:

// 抽象類

public abstract class Pet{

//抽象方法

public abstract void toHospital();

2、抽象類和抽象方法的關係

1:有抽象方法的類,一定是抽象類,但抽象類不一定有抽象方法;

2:一個類繼承抽象類,必須重寫抽象類中的所有抽象方法,如果沒有全部重寫,那麼子類必須宣告為抽象類

3:沒有抽象構造方法,也沒有抽象靜態方法

4:抽象類中可以有構造方法,建立子類的例項時呼叫

1、抽象類和普通類的區別 - 記住3條以上

1、語法不同,抽象類是被abstract修飾的類,普通類一定不能被abstract修飾;

2、抽象類中可以有抽象方法,普通類一定不能有抽象方法;

3、抽象類不能被例項化,普通類可以去例項化呼叫;- 建立物件

4、抽象類被繼承時,子類必須重寫全部的抽象方法,或者將子類宣告為抽象類;普通類繼承普通類的時候,沒有任何限制;

2:介面

1:什麼是介面

介面(英文:Interface),在JAVA程式語言中是一個抽象型別,是抽象方法的集合(介面中的所有的方法都是抽象方法),介面通常以interface來宣告。

介面是一個特殊的類,這個類中只能存值抽象方法,為了和普通的類去做區分,同時彌補java單繼承的缺陷,把這個特殊的類叫介面,使用interface宣告介面

一個類通過實現介面的方式,從而來實現介面的抽象方法。

介面並不是類,編寫介面的方式和類很相似,但是它們屬於不同的概念。類描述物件的屬性和方法。介面則包含類要實現的方法。

除非實現介面的類是抽象類,否則該類要定義介面中的所有方法。

介面無法被例項化,但是可以被實現。一個實現介面的類,必須實現介面內所描述的所有方法,否則就必須宣告為抽象類。另外,在 Java 中,介面型別可用來宣告一個變數,他們可以成為一個空指標,或是被繫結在一個以此介面實現的物件。

2:介面的宣告

宣告介面的語法:

public interface MyInterface {

public abstract void eat(); // 介面中的所有方法都是抽象方法;

void run(); // 可以省略前面的修飾

}

3:介面的特點

1、介面不能用於例項化物件。

2、介面沒有構造方法。

3、介面中所有的方法必須是抽象方法。預設為:public abstract

4、介面不能包含成員變數,除了 public static final 常量。

5、介面不是被類繼承了,而是要被類實現。實現使用關鍵字:implements

6、介面支援多實現。

7、一個類可以繼承一個類的同時實現多個介面。

3:使用介面

使用介面的步驟:

1、建立介面,宣告方法

2、建立類,實現介面,實現介面中的方法

3、使用實現後的方法執行具體的操作

4:介面與抽象類的區別

1、抽象類使用關鍵字abstract class修飾,介面使用關鍵字interface;

2、抽象類使用關鍵字extends實現繼承,介面使用implements來實現

3、抽象類中可以包含抽象方法和普通方法,介面中只能有抽象方法(1.7);

4、抽象類可以有構造方法,介面中不能有構造方法;

5、抽象類可以有成員變數,介面中只能有常量;

6、抽象類只能單繼承,介面可以多繼承;

7、抽象類裡面的方法可以是public,protect,private,介面的方法只能是public;