Java初級筆記_面向對象2

------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------

Java基礎知識

一、封裝

     A:封裝的引入

         通過學生案例,給年齡賦值爲負數引出數據問題。
  然後通過private解決這個問題。最後說其實這就是封裝。
  

       B:封裝概述

         是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。

       C:封裝好處

         隱藏實現細節,提供公共的訪問方式。類,方法等其實都是封裝的具體體現。
  提高了代碼的複用性
  提高安全性。

       D:封裝原則

          將不需要對外提供的內容都隱藏起來。
  把屬性隱藏,提供公共方法對其訪問。

       E:常見的應用

          類中的所有成員變量私有,給出對應的get/set方法。

       F:代碼實現:

  class Student{
private String name;
private int age;


public Student(){}
public Student(String name,int age){
this.name = name;
this.age = age;
}

public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}

public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}

二、private this static關鍵字

   A:private關鍵字的概述和特點

         1) private關鍵字特點

           a:是一個權限修飾符
      b:可以修飾成員變量和成員方法
      c:被其修飾的成員只能在本類中被訪問
  

         2) private最常見的應用

              (1):把成員變量用private修飾
      (2):提供對應的getXxx()和setXxx()方法

     B:this關鍵字的概述和應用

       A:爲什麼要有this 

              當我們的局部變量和成員變量相同的時候,如果我們不使用this關鍵字,那麼會導致一個問題:就是局部變量隱藏了               成員變量的問題

         B:this關鍵字特點

              是一個關鍵字,代表當前類的對象引用。

   簡單記:在方法中,哪個對象調用方法,this就代表誰。       

         C:this的應用場景

             解決局部變量隱藏成員變量問題。
     在構造方法中調用其他的構造方法(必須寫在第一行)        this();
     在其他方法中可以使用this.普通方法名()調用普通方法     this.eat();

     C:static關鍵字

         1)概述

             是一個關鍵字。可以修飾成員變量和成員方法。

         2)靜態的特點

             a:隨着類的加載而加載
     b:優先於對象存在
     c:被類的所有對象共享
     d:可以通過類名調用

   3)靜態的注意事項

             a:在靜態方法中是沒有this關鍵字的。
     b:靜態方法只能訪問靜態的成員變量和靜態的成員方法。

  4)靜態內容的調用

             a:被對象調用
     b:被類名調用

          5)什麼時候該用static

             如果某個內容是所有對象共享的,就用靜態修飾。
     例如:
水杯和飲水機。
廁所和人。
老師和學生。

三、繼承(extends)

      A: 概述:

            把多個類中的相同的屬性和行爲進行抽取,封裝到一個類中,
    然後再建立新類的時候,不需要從頭做起,繼承剛纔定義的那個類即可。
B:好處:
     a:提高代碼的複用性。
     b:讓類與類之間產生了一個關係,是多態的前提。
C:什麼時候使用繼承
     a:如果類之間存在着:  is a 的關係,就可以考慮使用繼承。
     b:不要爲了繼承部分功能,而去使用繼承。
D:繼承的特點
     a:Java只支持單繼承,不支持多繼承。
如果支持多繼承,就會有調用不明確的問題。
     b:Java支持多層(重)繼承。也就是說java中的接口支持多繼承
E:super和this的區別
     a:super是一個關鍵字,代表父類的存儲空間標識。(可以理解爲父親對象的引用)
     b:它和this的用法相似
1:成員變量
this.變量--本類的
super.變量--父類的
2:構造方法
this(...)--本類的
super(...)--父類的
3:成員方法
this.方法名()--本類的
super.方法名()--父類的
F:子父類中成員變量的用法:
     a:名稱不同,這個太簡單了。
     b:名稱相同,子類對象的在使用的時候:
先找子類局部範圍
再找子類成員範圍
最後找父類成員範圍
父類的父類成員範圍
G:子父類中成員方法的用法:
     a:名稱不同,這個太簡單了。
     b:名稱相同,子類對象的在使用的時候:
先找子類的
再找父類的
     c:方法重寫
在子類中,方法聲明(修飾符,返回值,方法名,參數列表)相同的情況。
注意事項
  1:父類中私有方法是不能被重寫
  2:子類方法的訪問權限一定要大於等於父類的訪問權限
  3:靜態只能重寫靜態。(這個不能算,因爲靜態跟類相關)
H:子父類中構造方法的用法:
     a:子類的初始化過程中,首先回去執行父類的初始化動作。
  因爲子類的構造方法中默認有一個super()。
   爲什麼?子類要使用父類的成員變量,這個初始化,必須在子類初始化之前完成。
   所以,子類的初始化過程中,會先執行父類的初始化。
     b:如果父類沒有無參構造方法
   1:使用super調用父類的帶參構造。推薦方式。
   2:使用this調用本身的其他構造。

      (1)執行順序:
靜態代碼塊 --> 構造代碼塊 --> 構造方法
默認初始化>顯式初始化>構造代碼塊初始化>構造方法初始化
(2)注意事項:
靜態代碼塊只執行一次

四、面向對象小結

     A:創建對象時的執行動作:
棧內存開闢空間存儲引用變量
    使用new創建內存空間
    調用構造方法
    成員變量默認初始化
    成員變量顯示初始化
    構造函數初始化
    對象創建結束,將地址賦值給引用變量

1:定義類
私有成員屬性
至少一個空參的構造方法
普通方法
公共的get/set方法通常手動放在最後

2;使用類創建對象
定義引用類型變量用來引用對象
使用new關鍵字與構造方法完成對象創建
在構造方法的同時對成員變量賦值
使用get/set方法操作成員變量
使用對象名.方法名(參數)調用對象函數
       

創建對象的過程,在這裏可以理解爲調用構造方法的過程
構造方法
用來創建對象的方法。
在創建對象的同時,可以直接爲屬性賦值。

如果沒有手動給出構造方法,則系統會默認給出空參的構造。
構造方法特點:
函數名與類名相同,與函數名標識符命名原則相悖
不進行返回值類型的定義
構造方法沒有返回值

構造方法之間以重載的方式存在

------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------

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