客戶類 vs 對(duì)象類
Java中有2種類:客戶類和對(duì)象類。在我們創(chuàng)建第一個(gè)Hello World! Java程序的時(shí)候檐嚣,我們就已經(jīng)使用過Java類了,這個(gè)類是一個(gè)客戶類,它的main()方法是作為程序的入口的。
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
在客戶類中,我們主要來定義變量蟆炊,定義其他對(duì)象類的對(duì)象稽莉,通過調(diào)用對(duì)象的方法來實(shí)現(xiàn)一定的業(yè)務(wù)邏輯瀑志。
public class Main {
public static void main(String[] args) {
System.out.println("Hello, Client Class!");
Student ada = new Student("Ada Lovelace", 2017, 12345, 3.2, 4);
Student alan = new Student("Alan Turing", 2016, 12346, 3.8, 9);
Student margret = new Student("Margret Hamilton", 2017, 12347, 3.92, 0);
System.out.println("Ada is graduating: " + ada.isGraduating());
System.out.println("Alan is graduating: " + alan.isGraduating());
System.out.println("Margret is graduating: " + margret.isGraduating());
}
}
與客戶類相對(duì)應(yīng)的是對(duì)象類,比如我們上一節(jié)課中定義的學(xué)生類:
public class Student {
String name;
int grad;
int ID;
double GPA;
int abs;
public Student(String name, int grad, int ID, double GPA, int abs) {
this.name = name;
this.grad = grad;
this.ID = ID;
this.GPA = GPA;
this.abs = abs;
}
public boolean isGraduating() {
return (GPA > 2.0 && abs < 10 && grad == 12);
}
}
類似于以上學(xué)生類污秆,對(duì)象類主要用來定義一種新的數(shù)據(jù)類型劈猪,它里邊可以有屬性和方法,它的屬性可以是基本數(shù)據(jù)類型良拼,也可以是其它對(duì)象類型战得,它的方法描述了這個(gè)類的對(duì)象可以有哪些功能。在客戶類中庸推,我們定義該對(duì)象類的對(duì)象常侦,然后通過訪問對(duì)象.方法來修改對(duì)象的狀態(tài)。
對(duì)象類的定義
對(duì)象類的定義可以由如下幾部分構(gòu)成:類的名字贬媒、類的屬性聋亡、類的構(gòu)造函數(shù)、類的方法际乘,如下圖所示:
Java類的結(jié)構(gòu)
類的屬性坡倔,又稱為類的狀態(tài),它是一個(gè)類的基本特征脖含,對(duì)于女孩這個(gè)類(girl)罪塔,女孩的姓名,年齡养葵,身高征堪,頭發(fā)顏色等都是女孩這個(gè)類的屬性。
構(gòu)造方法关拒,類的構(gòu)造方法在我們創(chuàng)建一個(gè)類的對(duì)象的時(shí)候使用佃蚜,構(gòu)造方法可以是有參數(shù)的構(gòu)造方法,也可以是無參數(shù)的夏醉,上圖中我們定義的是一個(gè)有5個(gè)參數(shù)的構(gòu)造方法爽锥,注意,如果我們不定義構(gòu)造方法畔柔,Java系統(tǒng)會(huì)默認(rèn)為我們定義一個(gè)無參的構(gòu)造方法氯夷。也就是說,如果我們自定義的對(duì)象類中一個(gè)構(gòu)造方法也沒寫靶擦,我們?nèi)匀豢梢允褂?code>ClassA a = new ClassA();這樣子的方法來定義這個(gè)類的對(duì)象腮考。
類的方法雇毫,類中的方法可以理解為類向外部公開的一個(gè)接口或代理,類中的屬性是被封裝起來的踩蔚,一般來說棚放,我們不建議通過
對(duì)象.屬性=value
來修改對(duì)象的狀態(tài),而是通過類為我們曝露出來的公共方法來修改對(duì)象的狀態(tài)馅闽。這也是面向?qū)ο笳Z言的封裝性的一個(gè)體現(xiàn)飘蚯。
我們將在稍后的章節(jié)中對(duì)類的屬性,類的構(gòu)造方法進(jìn)行詳細(xì)的描述福也。