二、Java之物件導向

踏行JAVA發表於2020-12-09

物件導向

什麼是物件導向

​ 把資料及對資料的操作方法放在一起,作為一個相互依存的整體——物件。對同類物件抽象出其共性,形成類。類中的大多數資料,只能用本類的方法進行處理。類通過一個簡單的外部介面與外界發生關係,物件與物件之間通過訊息進行通訊。程式流程由使用者在使用中決定。

​ 物件即為人對各種具體物體抽象後的一個概念,人們每天都要接觸各種各樣的物件,如手機就是一個物件。

​ 物件導向程式設計(OOP: object-oriented programming),物件導向三個重點封裝、繼承、多型

封裝

​ 簡單說就是不讓其他類直接操作本類的某些屬性和方法。也就是被private修飾的屬性和方法在其他類中不可被使用,如果需要使用就建立一個可以被訪問的方法來操作他們。

比如我們定義一個變數,如下。那麼我們在其他類中無法操作這個屬性,

private	 String name;	

但是我們又要操作這個屬性,那麼我們可以設定一個方法來對這個屬性操作。

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

通過上面的兩個方法,我們可以在其他類中對這個屬性經行設定值和讀取值。

繼承

繼承就是一個類繼承了另外一個類的所有東西。也就是父類的屬性和方法子類都有,父類的屬性和方法在子類中可以直接呼叫。

​ 在子類中我們可以使用super關鍵字獲取父類的一切,比如方法、屬性、建構函式等。

​ 我們可以重寫父類的方法,方法重寫規則就是和父類的方法名稱一致即可,如果重寫了父類的方法,我們還可以繼續讓父類的方法存在我們的子類中,使用super關鍵字即可。

​ Java中的繼承是單繼承也就是一類只能繼承一個父類,也就一個兒子只有一個父親。

多型

​ 多型的實現是基於繼承的關係上實現的,比如動物類,那麼貓類、狗類都是屬性動物類都有動物的特性,但是他們又有自己的特點。

建立動物類

public class Animal {
    public void say(){
        System.out.println("我會說話哦");
    }
    public  void sleep(){
        System.out.println("我會睡覺");
    }

}

建立Cat類

public class Cat extends Animal{
    public void eat(){
        System.out.println(" The cat to eat");
    }
}

建立Dog類

public class Dog extends Animal{
    public void call(){
        System.out.println("Dog is call ");
    }
}

1.子類的型別可以是父類,不需要轉換如:

public class Test {
    public static void main(String[] args) {
         Animal cat = new Cat();//型別為父類
         Cat cat1 = new Cat();//類為子類
         Animal dog = new Dog();//型別為父類
         Dog dog1 = new Dog();//類為子類
    }
}

2.建立子類,但型別為父類,那麼不能操作子類的東西。

public class Test {
    public static void main(String[] args) {
         Animal cat = new Cat();//型別為父類
         Cat cat1 = new Cat();//類為子類
        //如果引用型別名的型別為父類,那麼不能操作本類的一切
      //  cat.eat();//編譯會報錯,找不到方法
        

    }
}

3.建立子類,但型別為父類,那麼不能操作子類的東西,如果非要操作也是可以的,那就型別轉換。

public class Test {
    public static void main(String[] args) {
         Animal cat = new Cat();//型別為父類
         Cat cat1 = new Cat();//類為子類
        //如果引用型別名的型別為父類,那麼不能操作本類的一切
        ((Cat) cat).eat();//把父類型別變為子類型別

    }
}

在這裡插入圖片描述
在這裡插入圖片描述

相關文章