1. 程式人生 > >黑馬程式設計師 java程式設計之面向物件學習筆記總結

黑馬程式設計師 java程式設計之面向物件學習筆記總結

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ---------------------- 繼承:
在java中,在我們要對一個事物進行封裝時,發現有某一個類的特性和要封裝的這個
類的特性相同,而我們可以在這個類的基礎上進行一些功能的擴充套件就可以了,這樣可
以加快我們編寫程式的速度,那麼這時候我們就可以繼承這個類。
比如說:每個人都有自己的姓名和年齡,人會講話,將人封裝成一個類;
class person
{
String name;
int age;
public void person()
{

}
public void talk()
{
System.out.println("talk");
}
}
學生可以理解為人的子類,有姓名,年齡,會說話,而且不一樣的特徵,學生的工作是學習;
class student extends person
{
public void study()
{
System.out.println("學生學習");
}
}
這樣,學生不僅繼承了person的所有特徵,而且在person的基礎上進行自己特有的功能擴充套件。
這就是繼承。
這就是說,類的繼承是通過Java保留的關鍵字extends來修飾的,通過extends的關鍵字表明前
者具備後者的公共的成員變數和方法,在具備了所有的公共的成員變數和方法後,本身還能定
義一些特有的成員變數和方法。

修飾符:
public:表明被它修飾的成員變數為公共型別,那麼這個成員變數在任何包裡都能訪問,包括
子類也能訪問到
private:表明被它修飾的成員變數為私有型別,表示除了本類外任何類都不能訪問到這個成
員變數,具有很好的保護性。
default: 宣告成員變數為預設型別.如果不給成員變數新增任何修飾符,就表示這個成員變數
被修飾為default型別,在一個同包裡的類或子類是能夠訪問的,相當於public型別,
但是在不同包裡的類或子類沒有繼承該成員變數,是訪問不到它的。
protected:表明被它修飾的成員變數為保護型別,在同一包裡和public型別是一樣的,也是能
夠訪問到的,但是如果在不同包裡的protected型別的成員變數就只能通過子類來訪
問,這個修飾符是區別於其他的修飾符的。

final: 被final修飾的類不能被繼承;
被final修飾的方法不能被覆蓋;
被final修飾的變數是常量,只能被賦值一次。

抽象類:
用abstract修飾的類就是抽象類。
抽象類的特徵:抽象類不能被例項化,抽象類中可以有抽象方法,也可以沒有。
抽象類要想建立物件,必須有子類對其繼承,子類中覆蓋該類的所有抽象方法。
抽象類只能是父類。
抽象類中有建構函式,如果類中沒有過載的建構函式,那也至少有一個預設的建構函式。
abstract關鍵字不可以和private,final等關鍵字共同來修飾一個類。

抽象方法:
用abstract修飾的方法是抽象方法。
抽象方法只做了方法的宣告,沒有方法體。抽象方法只能在抽象類中。

介面:
介面中的成員包括:
1,全域性常量(用public static final來修飾);
2,抽象方法(public abstract 來修飾);
由此看來,介面中的成員都是用public來修飾。
介面不能直接被例項化,必須有一個類來實現(使用關鍵字implements)並覆蓋介面中的抽象方法後該子類才能被例項化。

介面除了以上特點外,還有幾個的特點:
1,介面是對外暴露的規則;
2,介面是程式的功能擴充套件;
3,介面的出現降低耦合性;


類與類:單繼承。(多繼承會給java虛擬機器在程式執行帶來不確定性,所以java中之只能單繼承)
類與介面:多實現。(類可以繼承一個父類的同時還能實現一個或多個介面)
介面與介面:多繼承。(為什麼介面與介面之間能多繼承,那是因為介面中的方法都是抽象方法)

介面和抽象類的區別:
相同點:都是不斷向上抽取而來的。
不同點:
1,抽象類需要被繼承,而且只能單繼承;
介面需要被實現,而且可以多實現。
2,抽象類中可以定義抽象方法和非抽象方法,子類整合後,可以直接使用非抽象方法;
介面中定義的方法必須是抽象方法,必須由子類去實現。
3,抽象類的繼承,是is a的關係,在定義該體系的基本共性內容;
介面的實現是like a的關係,在定義體系的額外功能。


----------------------
ASP.Net+Unity開發
.Net培訓、期待與您交流! ----------------------詳細請檢視:www.itheima.com