面向對象
-
類
-
對象
-
構造方法
-
引用與對象實例
-
static
-
final
-
封裝
-
繼承
-
方法重載與重寫
-
多態
-
抽象類
-
接口
-
內部類
1. 類
public class 類名 {
//定義屬性部分(成員變量)
屬性1的類型 屬性1;
屬性2的類型 屬性2;
...
//定義方法部分
方法1
方法2
...
}
樣例
public class People {
//屬性(成員變量) 有什麼
double height; //身高
int age; //年齡
int sex; //性別,0爲男性,非0爲女性
//方法 幹什麼
void cry(){
System.out.println("我在哭!");
}
void laugh(){
System.out.println("我在笑!");
}
void printBaseMes(){
System.out.println("我的身高是"+height+"cm");
System.out.println("我的年齡是"+age+"歲");
if(this.sex==0)
System.out.println("我是男性!");
else
System.out.println("我是女性!");
}
}
1.1 類變量
- 局部變量:在方法、構造方法或者語句塊中定義的變量被稱爲局部變量。變量聲明和初始化都是在方法中,方法結束後,變量就會自動銷燬。
- 成員變量:成員變量是定義在類中,方法體之外的變量。這種變量在創建對象的時候實例化。成員變量可以被類中方法、構造方法和特定類的語句塊訪問。
- 類變量:也叫靜態變量,類變量也聲明在類中,方法體之外,但必須聲明爲
static
類型
2. 對象
類名 對象名 = new 類名();
public class NewObject {
public static void main(String[] args) {
People LiLei = new People(); //創建一個People對象LiLei
LiLei.height =170;
LiLei.age = 20;
LiLei.sex = 1;
LiLei.printBaseMes();
}
}
2.1 對象的屬性和方法
//引用對象屬性
對象名.屬性//引用對象方法
對象名.方法
LiLei.height = 170;
LiLei.cry();
2.2 對象變量的使用範圍
- 局部變量的作用域僅限於定義它的方法內。而成員變量的作用域在整個類內部都是可見的。
- 同時在相同的方法中,不能有同名的局部變量;在不同的方法中,可以有同名的局部變量。
- 成員變量和局部變量同名時,局部變量具有更高的優先級。
3. 構造方法
創建一個對象的時候,至少調用一個構造方法。
//與類同名,可以指定參數,沒有返回值
public 構造方法名(){
//初始化代碼
}
public class People{
//無參構造方法
public People(){
}
//有一個參數的構造方法
public People(int age){
}
}
- 如果在定義類的時候沒有寫構造方法,系統會默認生成一個無參構造方法,這個構造方法什麼也不會做。
- 當有指定的構造方法時,系統都不會再添加無參構造方法了。
- 構造方法的重載:方法名相同,但參數不同的多個方法,調用時會自動根據不同的參數選擇相應的方法。
4. 引用與對象實例
Object object=new Object();
5. static 靜態方法 與 靜態成員
5.1 靜態成員
Java 中被 static
修飾的成員稱爲靜態成員或類成員。
它屬於整個類所有,而不是某個對象所有,即被類的所有對象所共享。
靜態成員可以使用類名直接訪問,也可以使用對象名進行訪問。
5.2 靜態方法
被 static
修飾的方法是靜態方法,
靜態方法不依賴於對象,不需要將類實例化便可以調用,
由於不實例化也可以調用,所以不能有 this
,也不能訪問非靜態成員變量和非靜態方法。
但是非靜態成員變量和非靜態方法可以訪問靜態方法。
6. final 關鍵字
final
關鍵字可以修飾類、方法、屬性和變量
final
修飾類,則該類不允許被繼承,爲最終類final
修飾方法,則該方法不允許被覆蓋(重寫)final
修飾屬性:則該類的屬性不會進行隱式的初始化(類的初始化屬性必須有值)或在構造方法中賦值(只能選其一)- final 修飾變量,則該變量的值只能賦一次值,即常量
//靜態常量
public final static String GIT_HUB_ID="@HANXU2018";