面向對象的概念 | 類與對象 | java基礎

一、面向對象的概念

關於面向對象的概念問題一直困擾了我好久,雖然看了很多例子但始終不理解(文轉理),最近在知乎上看到這麼一個回答,我要給他十萬個贊,感覺很是精闢
引號內爲原文,知乎網友匿名

你的程序要完成一個任務相當於將一個故事
面向過程是編年史
面向對象時紀傳體
相對於複雜的程序/宏大的故事,事實證明了,面向對象/紀傳體都是更好的表達方式

https://www.zhihu.com/question/27468564?sort=created(附該問題地址)

面向對象有三個特性
1、封裝性 (是面向對象核心思想,使程序更安全)
2、繼承性 (通過繼承,可以不用編寫新的類,對原有類進行擴展)
3、多態性 (多態性指的是在程序中允許出現重名現象,即一個類中定義的屬性和方法被其他類繼承後,可以表現出不同的數據類型或不同的行爲,這使得同一屬性和方法在不同的類中有不同的意義)

二、類與對象
類和對象的概念:
類就是類別,類別關注共同的屬性和行爲。
萬物皆對象,有些對象是包含着其他對象的,成爲類。
例如狗是一個類,狗的屬性:體重,毛色;狗的行爲:吃狗糧,汪汪叫。
而一隻多少體重,什麼顏色,這就是對象。
對象是根據類創建的,並且一個類可以創建多個對象。

1、類的定義

想要創建一個對象,首先要定義一個類,用來描述一組對象的共同特徵,行爲。
類中有成員變量,成員方法。
成員變量:描述對象的特徵,又稱作屬性
成員方法:描述對象的行爲,簡稱方法
方法中也可以定義變量,這種變量稱爲局部變量。如果兩種變量重名,此時通過變量名訪問的是局部變量。

class Person{
    int age=10;
    void speak(){
        int age=20;
        System.out.println("大家好,我今年"+age+"歲")
    }
}
//代碼結果是20,最簡單的類和方法也是這樣定義的

有類之後如何創建對象?可以使用new關鍵字

//創建Person的實例對象
Person p=new Person();

//如何訪問對象的成員?   對象名.成員名
p.age=30; //爲age賦值
p.speak(); //調用對象的方法

當實例化一個對象的時候,java虛擬機會自動爲其初始化,不同類型的變量初始化值也不同。

2、類的封裝

定義:將類中的屬性私有化,即使用private關鍵字來修飾,私有屬性只能在他所在的類中被訪問。
外界如何訪問私有屬性?
獲取屬性值 getXxx( )方法
設置屬性值 setXxx( )方法

//案例:如果編寫一個自我介紹,把年齡輸入成負數,是不對的,但是我們又無法制止,因此用到了封裝,代碼如下
class Student {
    private String name;    // 將name屬性私有化
    private int age;        // 將age屬性私有化
    // 下面是公有的 getXxx 和 setXxx 方法
    public String getName() {
        return name;
    }
    public void setName(String stuName) {
        name = stuName;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int stuAge) {
        // 下面是對傳入的參數進行檢查
        if (stuAge <= 0) {
              System.out.println("年齡不合法...");   
        } else {
            age = stuAge;   // 對屬性賦值
        }
    }
    public void introduce() {
        System.out.println("大家好,我叫" + name + ",我今年" + age + "歲!");
    }
}
public class Example04 {
    public static void main(String[] args) {
        Student stu = new Student();
        stu.setAge(-30);
        stu.setName("李芳");
        stu.introduce();
    }
}
//這樣就會在傳入參數的過程中起到檢查作用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章