面向對象三大特性,瞭解一哈!!!

說到面向對象三大特性之前,先概述一下什麼是面向對象

面向對象簡單來說就是一種程序設計思想,我們在面向對象思想的指引下, 使用Java語言去設計、開發計算機程序。 這裏的對象泛指現實中一切事物,每種事物都具備自己的屬性和行爲。

要注意這種思想強調的是對象,讓別人幫我們幹活,能幫我們幹活的就稱爲對象.

現實世界的一類事物:                           屬性:事物的狀態信息。     行爲:事物能夠做什麼。                                                      Java中用class描述事物也是如此:  成員變量:對應事物的屬性   成員方法:對應事物的行爲

簡述後,現在來說說面向對象的三大特性.

特性一  封裝

什麼是封裝? 封裝就是使用private關鍵字將隱私的內容隱藏起來,不讓外界直接使用

封裝的原則: 1. 將隱私的內容私有 
                    2. 被private修飾後的成員變量和成員方法,只在本類中才能訪問       
                    3. 提供get/set方法給別人使用

封裝的好處: 提高代碼的安全性

class Demo {
    // 比如定義一個妹子的屬性
    String name;
    //像這個妹子的年齡不想給別人直接看到,用private私有,外界就不能直接使用了
    private int age;

    //要給外界使用提供set/get方法
    //提供設置age的方法
    public void setAge(int age) {
        this.age = age;
    }
    // 提供獲取age的方法
    public int getAge() {
        return age;
    }

    //定義一個私有方法
    static private void method(){
        System.out.println("這是一個靜態的私有方法");
    }
    static void method1(){
        //私有方法只有本類才能訪問,外界訪問不到
        method();
    }

}

特性二  繼承

什麼是繼承?  繼承就是在現有類的基礎上定義一個新的類,現有類稱爲父類,新的類稱爲子類,,子類對象具有與父類相同的屬性、相同的行爲。子類可以直接訪問父類中的非私有的屬性和行爲.

繼承的格式
         class 類名 extends 父類名 { 

        }

 和普通類相比:在類名後面多了extends 父類名.  extends關鍵字表示繼承.

構造方法子類不會繼承
因爲構造方法名和類名一致,父類和子類類名肯定不一樣,所以父類的構造方法複製到子類中肯定用不了了:

什麼時候使用方法重寫:
子類和父類相同的功能,但是子類的功能比父類的功能更加強大,就使用方法的重寫

方法重寫注意事項:
        1.是子類和父類之間的事情
        2.方法名要相同
        3.參數列表要相同
        4.返回值類型要相同
        5.子類方法的權限要大於等於父類方法的權限

繼承的好處:  1. 子類會自動擁有父類的內容,提高代碼的複用性
                     2. 類與類之間產生了關係,是多態的前提

class Person {
    //定義父類成員變量
    String name;
    private int age;
    //無參構造和有參構造
    public Person() { }
    public Person(String name, int age) { this.name = name;this.age = age; }
    //定義成員方法
    public void eat() {System.out.println("吃飯"); }
    //提供set/get方法
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}
//定義一個子類繼承Person
class Student extends Person {
    //構造方法不能被繼承,類名不同
    public Student() { }
    public Student(String name, int age) { super(name, age); }
    //同名方法需要重寫
    public void eat(){ System.out.println(name + getAge() + "吃不起飯"); }
}

特性三  多態

多態: 是指同一行爲,具有多個不同表現形式

多態的前提:
           1 繼承或者實現【二選一】
           2 方法的重寫【意義體現:不重寫,無意義】
           3 父類引用指向子類對象【格式體現】

多態的格式(重點): 父類引用變量指向子類對象
           父類 變量名 = new 子類(); 
           接口 變量名 = new 實現類();

多態的弊端:
當使用多態方式調用方法時,多態只能調用父類中的方法,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤;如果有,執行的是子類重寫 後方法

多態的好處:  
參數寫父類,可以傳入任意子類,多態規定,執行的是子類重寫的方法,提高代碼的擴展性 .

class Demo {
    public static void main(String[] args) {
        Student s = new Student();
        Teacher t = new Teacher();
        //調用方法,參數在傳遞過程中就使用了多態
        kaiFan(s);  //Person o = s;   Person o = new Student();
        kaiFan(t);  //Person o = t;   Person o = new Teacher();
    }
    //定義一個開飯的方法  //參數寫父類,可以傳入任意子類,提高代碼的擴展性
    public static void kaiFan(Person o) { o.eat(); }
}
class Person {
    public void eat() { System.out.println("吃飯"); }
}
class Student extends Person {
    public void eat() { System.out.println("學生三菜一湯..."); }
}
class Teacher extends Person {
    public void eat() { System.out.println("老師醬油拌飯..."); }
}

 

 

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