類是對象的抽象,類是模板,類是一類事物經(jīng)過抽象,所共有屬性的集合。
比如有各種各樣的汽車,有轎車、貨車、面包車等,這些機(jī)動(dòng)車輛都可以被認(rèn)為是對象,如果讓我們用一個(gè)詞去概括它們(就是抽象的過程)那是什么呢?是汽車,它們都可以被稱為汽車(所以說,類是對象的抽象)。汽車這個(gè)概念是我們跟據(jù)不同的汽車抽象出來的,它能包括馬路上所有的機(jī)動(dòng)車輛,那么汽車這個(gè)概念就可以針對我們java中的類,它并不是具體指哪一輛汽車,也不是具體指那一種汽車,它是一個(gè)統(tǒng)稱(模板)它具有一定的內(nèi)容(屬性的集合),比如說,必須動(dòng)力驅(qū)動(dòng)、有車輪等屬性,如果想讓一個(gè)對象被稱為是汽車,你必須滿足這些屬性(類是模板),如果是馬拉的車,那就不能叫汽車了。這就是Java中類概念的內(nèi)涵。
現(xiàn)在我們已經(jīng)抽象出一個(gè)類——汽車類,汽車有不同的牌子,有不同的顏色,不同的形狀,我們稱每一輛具體的汽車為汽車類的一個(gè)實(shí)例,從汽車類到具體汽車的過程被稱為實(shí)例化的過程,又稱為類(汽車類)的實(shí)例化。在Java中一個(gè)類的實(shí)例化是通過關(guān)鍵字“new”來進(jìn)行的。
比如說我們現(xiàn)在聲明一個(gè)汽車類:
public class Car
{
……
}
進(jìn)著進(jìn)行一個(gè)類的實(shí)例化:
new Car();
一個(gè)類的實(shí)例是針對一個(gè)具體的對象的,它是一些具體屬性的集合,
設(shè)計(jì)自己的類
下面設(shè)計(jì)一個(gè)自己的類,我們的目的是做一個(gè)小型的學(xué)生管理系統(tǒng),既然是學(xué)生管理系統(tǒng),我們必須要擁有學(xué)生類,下面我們就開始設(shè)計(jì)一個(gè)學(xué)生類。
需求分析:
1、 對于一個(gè)學(xué)生類(class Student),作為整個(gè)系統(tǒng)最核心的類,我們希望它能包括學(xué)生公有的基本信息:學(xué)生姓名、學(xué)號(hào)、性別、出生年月、專業(yè)、籍貫等。
2、 做為學(xué)生類的實(shí)例,我們希望能通過設(shè)置或訪問來修改這些學(xué)生的不同信息。
public class StudentTest
{
public static void main(String[] args)
{
Student tom=new Student("Tom","20020410");
tom.setStudentSex("man");
tom.setStudentAddress("America");
System.out.println(tom.toString());
}
}
class Student
{
private String strName=""; //學(xué)生姓名
private String strNumber=""; //學(xué)號(hào)
private String strSex=""; //性別
private String strBirthday=""; //出生年月
private String strSpeciality=""; //專業(yè)
private String strAddress="";
public Student(String name,String number)
{
strName=name;
strNumber=number;
}
public String getStudentName()
{
return strName;
}
public String getStudentNumber()
{
return strNumber;
}
public void setStudentSex(String sex)
{
strSex=sex;
}
public String getStudentSex()
{
return strSex;
}
public String getStudentBirthday()
{
return strBirthday;
}
public void setStudentBirthday(String birthday)
{
strBirthday=birthday;
}
public String getStudentSpeciality()
{
return strSpeciality;
}
public void setStudentSpeciality(String speciality)
{
strSpeciality=speciality;
}
public String getStudentAddress()
{
return strAddress;
}
public void setStudentAddress(String address)
{
strAddress=address;
}
public String toString()
{
String information="學(xué)生姓名="+strName+",學(xué)號(hào)="+strNumber;
if(!strSex.equals(""))
information+=",性別="+strSex;
if(!strBirthday.equals(""))
information+=",出生年月="+strBirthday;
if(!strSpeciality.equals(""))
information+=",專業(yè)="+strSpeciality;
if(!strAddress.equals(""))
information+=",籍貫="+strAddress;
return information;
}
}
分析:
在程序中我們構(gòu)建了一個(gè)學(xué)生類的實(shí)例:
Student tom=new Student("Tom","20020410");
這樣的過程就是類的實(shí)例化的過程。tom是Student類實(shí)例的句柄,也就是我們所說的對象句柄,在后面對對象所進(jìn)行的任何操作,都是通過操作對象句柄進(jìn)行的。我們通過關(guān)鍵字new生成Student類的一個(gè)實(shí)例,一個(gè)實(shí)例代表的是一個(gè)特定屬性的對象,我們生成的特定對象是學(xué)生:姓名是tom,學(xué)號(hào)是20020410的一個(gè)學(xué)生。
構(gòu)造器(構(gòu)造方法)
能過關(guān)鍵字new來生成對象的實(shí)例,是通過構(gòu)造器(constructor)來實(shí)現(xiàn)的。簡單的說:構(gòu)造器是同類名相同的特殊方法。
public Student(Student name,String number)
{
strName=name;
strNumber=number;
}
當(dāng)構(gòu)造一個(gè)學(xué)生類的實(shí)例時(shí),學(xué)生類的構(gòu)造器就被啟動(dòng),它給實(shí)例字段賦值。
構(gòu)造器與方法的不同之處是:構(gòu)造器只能與關(guān)鍵字new一起使用,構(gòu)建新的對象。構(gòu)造器不能應(yīng)用于一個(gè)已經(jīng)存在的對象來重新設(shè)置實(shí)例字段的值。
構(gòu)造器的特點(diǎn):
1、 構(gòu)造器與類名相同(包括大小寫)
2、 一個(gè)類可有多個(gè)構(gòu)造器。
3、 構(gòu)造器可以有0個(gè)、1個(gè)或多個(gè)參數(shù)。
4、 構(gòu)造器沒的返回值,但不能用void修飾。
構(gòu)造器總是和new運(yùn)算符一起被調(diào)用。
posted on 2007-08-18 12:57
心隨Wǒ動(dòng) 閱讀(386)
評論(0) 編輯 收藏