1. 程式人生 > 其它 >Java中的類與物件

Java中的類與物件

​ 我們都知道Java是一門面向物件的程式語言,而類是面向物件中最為核心的一部分,在百度百科中,類的解釋為” 類(Class)是面向物件程式設計(OOP,Object-Oriented Programming)實現資訊封裝的基礎。類是一種使用者定義的引用資料型別,也稱類型別。每個類包含資料說明和一組操作資料或傳遞訊息的函式。類的例項稱為物件。 “

​ 而在Java中,更是有萬物皆物件的說法。以下是筆者在學習Java中類與物件的一些見解,如有錯誤,歡迎指正。

類與物件的關係

​ 類是一種抽象的概念,可以看作是所有具有相同屬性和方法的集合;而物件則是類的例項化,是一種具體的概念。

​ 比如Student(學生)就是一種抽象概念,但實際上並不存在具體的學生,而是我們所有在上學的人的一種集合;而具體到每一個人身上,如小明,小紅就是物件,他們是實際存在的個體,是學生的具體化,就稱為物件。

類的定義

​ 在Java中,類中包含屬性和方法,屬性是用來儲存特性,描述該類例項化後的物件的一些共同特徵,而方法則是一些共同的行為特徵。

定義的格式如下:

class Student{
    //屬性
    String name;
    int age;

    //方法
    void ReadingBook(){
        System.out.println(name+" is reading book ");
    }
}

物件的例項化

在Java中,物件例項化主要使用new關鍵字

Student Jom=new Student();

構造器

​ 在上面的例子中,我們發現呼叫Jom

這個物件中的方法時,發現輸出結果為

並不是我們想要輸出例項化物件正在讀書的結果,那麼,怎麼給型別的屬性賦值呢,這裡我們可以使用帶參構造器,在物件示例化時就給物件的相應屬性賦值。

​ 在類的方法中新增如下程式碼

Student(String name,int age){
    this.name=name;
    this.age=age;
}

這時我們發現在物件例項化時如果不輸入引數,就會報錯,這是因為如果我們不寫構造器時,系統會自動幫我們生成一個預設的無參構造器,但當我們自己新增構造器時,系統就不會幫我們新增。總之,每一個類都會有一個構造器。當然,一個類也可以有多個構造器,如下、

Student(){};
Student(String name,int age){
    this.name=name;
     this.age=age;
}

這時我們發現,直接初始化物件,不傳入引數也可以通過編譯。

類的繼承

​ 在學習繼承前,我們要連線類中的三種成員public、private、protected,這三種成員在繼承時有很大的區別,子類中只能繼承分類中的public和protected成員,在上面的例子中,如果我們想構造一個屬於大學生的類,就可以選擇繼承於Student,使用Student裡面的屬性和方法。如下

class CollegeStudent extends Student{
    
}

在Java中,繼承不像C++那樣有公有繼承、私有繼承和保護繼承,統一都是使用關鍵字extends,相當於C++中的公有繼承,在繼承中,有兩個很重要的指標,分別為thissuper,this指向當前物件的方法和屬性,super指向父類的方法和屬性,如下例子

public class test {
    public static void main(String[] args) {
    CollegeStudent Jom=new CollegeStudent();
    Jom.print();
    }
}
class Student{

    String name;
    int age;
    void Show(){
        System.out.println("I'm a student\n");
    }
}
class CollegeStudent extends Student{
    void Show(){
        System.out.println("I'm a college student\n");
    }
    void print(){
        super.Show();
        this.Show();
    }
}

輸出結果為:

在Java中,重寫父類的變數和方法後,使用super就可以很好地區分父類和子類。