1. 程式人生 > >類和物件+構造方法(Java)

類和物件+構造方法(Java)

關於什麼是的物件?

先不用思考物件的定義是什麼,想一想生活中有哪些物件。一支筆,一本書,都是一個物件。其實所謂物件就是真實世界中的實體,物件與實體是一一對應的,也就是說現實世界中每一個實體都是一個物件,它是一種具體的概念。
生活中有很多筆,很多書,我們如何去描述其中的某一支筆呢?我們可以描述它的顏色,品牌,長度,粗細和用途之類的,那這些就是這個物件的特徵和功能,我們把描述這樣一支筆的內容稱之為類。即類是具備某些共同特徵的實體的集合,它是一種抽象的概念,用程式設計的語言來說,類是一種抽象的資料型別,它是對所具有相同特徵實體的抽象。類是物件的集合,物件是類的例項;物件是通過new className產生的,用來呼叫類的方法;類的構造方法 。

關於Java中的類
1.組成:類是由屬性和方法組成的
類中的方法分為兩類:①普通方法 ②構造方法
屬性是由物件的特徵進行定義的。
普通方法是由物件的行為(功能)進行定義的。

2.格式
修飾符 class 類名 {
//屬性的格式
訪問修飾符 資料型別 屬性名;
//普通方法的格式
訪問修飾符 返回值型別 方法名(資料型別 引數名,…){
//程式碼
}
//構造方法的格式
訪問修飾符 構造方法名(資料型別 引數名,…){
//程式碼
}
}

例如編寫一個Student 類

public
class Student { public String name; public int score; public Student(String n, int s){ } }

*
例項化物件的關鍵字:new
格式:
①類名 物件名 = new 類名();
②類名 物件名 = new 構造方法名(引數值,…);
呼叫方法和屬性的格式:
①物件名.屬性名
②物件名.方法名(引數值,…);
例如:

Student stu = new Student("張三",3);      
Student stu2 = new Student("李四"
,3); stu2.name = "李四";

關於建構函式
1.構造方法的格式
public 類名(資料型別 引數名,…){
//程式碼
}
注意:
①構造方法一定不能定義返回值型別。
②構造方法的名字必須要和類名完全一致,包括大小寫。

2.構造方法的用途:
①例項化物件。
②初始化屬性值。

3.構造方法和普通方法的區別
①返回值:構造方法一定沒有返回值,也不能用void修飾
②用途:構造方法是用來例項化物件和初始化屬性的;普通方法是對物件的行為定義的,呼叫普通方法時表示執行的物件的行為(功能)。
③名字:構造方法名必須和類名一致, 普通方法符合命名規則可自定義。

關於方法過載
1.方法過載的條件:
①方法名必須要完全一致;
②方法所帶的引數個數、引數順序、引數型別至少一個不同。(與返回值無關)

2.生活中什麼樣的情況要使用方法過載?
普通方法的過載情況:
學習開車、學習打遊戲
構造方法的過載情況:

3.如何呼叫過載後的方法呢?
由呼叫方法時所給的引數來決定。
例如
在Student類中定義了兩個過載函式

public class Student {

    public String name;
    public int score;

    public Student(){
    }

    public Student(int s,String n){
    }

    //定義一個構造方法
    public Student(String name,int score){
        this.name = name;
        this.score =score ;
    }

    protected int study(int s){
        score += s;
        System.out.println(name+"的學分是"+score);
        return 0;
    }

    public void study(){
        score++;
        System.out.println(name+"正在學習中,學分是"+score);
    }

}

呼叫時:

Student stu = new Student("張三",3);
Student stu2 = new Student("李四",3);

stu2.name = "李四";
stu2.study(10);
stu.study();

關於this關鍵字
1.當你引數名和屬性名完全一致的情況下,給屬性名加上”this.”,這樣才會表示屬性,否則表示的是引數。

this.name=name;                        
//this關鍵字區分,左邊的表示name 屬性,右邊的表示name引數

2.那麼this表示誰呢?
this表示的是的當前呼叫方法的物件。
假設a物件名在呼叫方法,那麼方法中this就表示a物件。