OOP Unit05 抽象類 介面和內部類(上)

2021-08-02 11:41:22 字數 3463 閱讀 5906

1.static final常量:

1)必須宣告同時初始化

2)通過類名來訪問,不能被改變

3)建議:常量名所有字母都大寫(多個單詞間用_)

4)在編譯時被自動替換為具體的值,效率高

static final演示

package oo.day05;

//static final常量

public

class staticfinaldemo

}class boo

class aoo

擴充套件知識:

int count = 6; //系統預設加了public static final

void say(); //系統預設加了public abstract

2.抽象方法:

1)由abstract修飾

2)只有方法的定義,沒有方法具體的實現(大括號都沒有)

3.抽象類:

1)由abstract修飾

2)包含抽象方法的類必須是抽象類

不包含抽象方法的類也可以宣告為抽象類—-我樂意

3)抽象類不能被例項化

4)抽象類是需要被繼承的,子類:

4.1)重寫所有抽象方法—建議

4.2)也宣告為抽象類—–不常這樣做

5)抽象類的意義:

5.1)封裝子類所共有的屬性和行為——-繼承父類–父類的意義

5.2)為所有子類提供了一種統一的型別—向上造型–父類的意義

5.3)可以包含抽象方法,為所有子類提供了統一的入口

子類的具體實現不同,但入口的定義是一致的

package oo.day05;

//求一**形中的最大面積

public

class

shapetest

//找最大面積

public

static

void maxarea(shape shapes)

}system.out.println("最大面積:"+max+",所在下標為:"+maxindex);

}}abstract

class

shape區域

}//抽象類下有幾個方法,就要重寫幾個,否則語法會報錯

class

square

extends

shape

public

double area()

}class

circle

extends

shape

public

double area()

}

4.介面:

1)是一種標準、規範(制定方)

遵守了這個標準就能幹某件事———api後

2)是一種資料型別(引用型別)

3)由inte***ce定義,只能包含常量和抽象方法

4)介面不能被例項化

5)介面是需要被實現(implements)的,實現類:

必須重寫介面中的所有抽象方法

6)乙個類可以實現多個介面,

若又繼承又實現時,應先繼承後實現

7)介面可以繼承介面

介面例子:

inte***ce

inter1 //編譯錯誤,抽象方法不能有方法體

}abstract

class

shape

class

square

extends

shape

}class

circle

extends

shape

}class

sixextends

shape

}

介面的演示

package oo.day05;

//介面的演示

public

class

inte***cedemo

}//介面間的繼承

inte***ce

inter5

inte***ce

inter6

extends

inter5

class

fooimplements

inter6

public

void show(){}

}//介面的多實現

inte***ce

inter3

inte***ce

inter4

abstract

class

dooclass

eooextends

dooimplements

inter3,inter4

public

void say(){}

void test(){}

}//介面的實現

inte***ce

inter2

class

cooimplements

inter2

public

void say(){}

}//介面的語法

inte***ce

inter1 //編譯錯誤,抽象方法不能有方法體

}

介面框架演示,銀聯卡系統:

package oo.day05;

//銀聯卡系統

public

class

unionpaytest

}inte***ce

unionpay

inte***ce

icbc

extends

unionpay

inte***ce

abcextends

unionpay

class

icbcimpl

implements

icbc

public

boolean drawmoney(double number)

public

boolean checkpwd(string input)

public

void payonline(double number){}

}class

abcimpl

implements

abcpublic

boolean drawmoney(double number)

public

boolean checkpwd(string input)

public

boolean paytelbill(string phonenum,double

sum)

}

介面和抽象類

介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...

抽象類和介面

抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...

抽象類和介面

1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...