Java中類、對象、封裝、繼承和多態(很詳細)

1.類與對象:

(1)類是一種抽象的數據類型,它是對某一類事務的整體描述或定義,但是並不能代表某一具體的事務。例如:人(人有姓名,年齡,性別等特徵);對象是抽象概念的具體事例。例如:趙雲就是人(類)的一個具體實例,趙雲家的旺財就是狗(類)的一個具體的實例。對象是展現出來的具體實例,而不是抽象的概念。
(2)類與對象的創建:

//這裏就是創建了一個Person類
public class Person(){
	//每個類中又包含屬性以及方法
	String name;
	int age;
	//方法
	public void study(){
		System.out.println(this.name+"人在學習");
	}
}

類的實例化

public class Application(){
	public static void main(String[] args){
		Person TW=new Person();//先用new創建對象,這裏TW這個對象就是Person類的實例化
		TW.name="小明";//在沒有賦值之前姓名默認爲null,年齡默認爲0
		TW.age=21;
		//輸出這個人的姓名以及年齡
		System.out.println(TW.name);
		System.out.println(TW.age);
	}
}

(3)構造器:類中的構造器也稱構造方法,是在進行創建對象的時候必須要調用的,進行默認的初始化以及對類中構造器的調用,方法名稱必須與類名相同,不能有返回值類型,包括void也不能寫

public class Person(){
	String name;
	int age;
	//構造一個無參構造器,並且進行實例化的初始化值
	public Person(){}
	//這裏一旦定義了有參構造器,在使用new來創建對象時無參構造器必須存在,否則就會報錯
	public Person(String name,int age){
		this.name=name;
		this.age=age;
	}
}
public class Application(){
	public static void main(String[] args){
		Person TW=new Person("小明"21);//傳參數
		System.out.println(TW.name);
		System.out.println(TW.age);
	}
}
	

2.封裝

通常應禁止直接訪問一個對象中數據的實際顯示,而應通過操作接口來訪問,這個過程就稱爲封裝,封裝可以增加數據的安全性

public class person {
	//當屬性進行私有以後,外部的就無法對屬性進行訪問,此時就要在內部獲得get和set方法
    private String name;
    private int age;
    private int id;
	/*一下就是獲得每個屬性的get和set方法,get方法是獲取值,set方法則是設置值
	我是在vscode上來寫的,快速生成get和set的方法爲鼠標右鍵,然後選擇源代碼操作,
	然後選擇Generate Getters and Setters,選中要生成get和set方法的屬性即可自動生成*/
	public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
    //這裏可以自己對年齡加一個限制,可以過濾掉不合法的數據
    	if(age>120||age<0){
    		this.age = 2;
    	}else{
    		this.age = age;
    	}
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
public class Application(){
	public static void main(String[] args){
		Person TW=new Person();
		TW.setName("小明");//修改信息用set方法
		System.out.println(TW.getName());//獲取信息用get方法
		TW.setAge(999);//這裏傳入的就是一個不合法的數據,根據判斷條件就會輸出2
		System.out.println(TW.getAge());
	}
}

3.繼承

繼承其實在生活中很常見比如兒子繼承父母的特徵,另外繼承在java中只有單繼承而沒有多繼承,繼承是類跟類之間的關係。

//父類
public class Person(){
	public String name="TWQ";//如果這裏改成private則這個屬性就是父類獨有的,子類就不可以繼承此屬性
	public int age=23;
	public void say(){
		System.out.println("世界那麼大我想去看看");
 	}
}
//子類
public class student extends Person{
	
}
public class Application(){
	public static void main(String[] args){
		student TW=new student();
		//student中原本沒有age和say方法,但由於繼承則也會有父類的所有屬性以及方法
		System.out.println(TW.name);
		System.out.println(TW.age);
		Tw.say();//這裏會輸出父類中say方法內部的輸出
	}
}

4.多態

即同一方法可以根據發送對象的不同,而採用多種不同的行爲方式;一個對象的實際類型是確定的,但可以指向的對象的引用的類型就有很多;另外多態是方法的多態,屬性沒有多態。

public class Person(){
	public void TWQ(){
		System.out.println("son");
	}
}
public class student extends Person{
	//這個方法用來說明main中第二次調用,第一次調用的時候沒有這個
	public void TWQ(){
		System.out.println("eat");
	}
}
public class Application(){
	public static void main(String[] args){
		//下面三個即爲多態的過程,即同一個學生類用不同的狀態表示
		student t1=new student();
		Person t2=new studnet();//父類的引用指向子類對象
		Object t3=new student();//Object又稱爲祖宗類
		t2.TWQ();//由於子類繼承父類方法,所以t2可以按照父類方法進行輸出,同理t1有人同樣可以輸出,顯而易見父類不能繼承子類的方法
		//如果在子類student中重寫父類中的方法,則在運行方法時,都按照子類的來
		t1.TWQ();//此時這倆輸出的結果都是按照子類的方法來的,也就是輸出eat
		t2.TWQ();
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章