一、面向對象
1.面向對象是在程序中使用對象來(lái)映射現實(shí)中的事物,對象的關(guān)系來(lái)描述事物之間的聯(lián)系。
2.面向對象的特點(diǎn):
封裝性:封裝是將類(lèi)的某些信息隱藏在類(lèi)內部,不讓外部程序去訪(fǎng)問(wèn),需要通過(guò)這個(gè)類(lèi)提供的方法來(lái)實(shí)現對隱藏信息的操作和訪(fǎng)問(wèn)。封裝也是面向對象的核心思想,把類(lèi)的屬性和行為封裝起來(lái),不給外界知道具體的細節。
繼承性:繼承是類(lèi)與類(lèi)的一種關(guān)系,而不是對象在繼承。子類(lèi)從父類(lèi)繼承,子類(lèi)中就擁有父類(lèi)中定義的所有成員,只是類(lèi)的繼承,我們創(chuàng )建對象,對象與對象是毫無(wú)關(guān)系的。滿(mǎn)足繼承是一種”is a”關(guān)系,凡是滿(mǎn)足”is a”關(guān)系的類(lèi)就可以擁有繼承的關(guān)系,當A類(lèi)是1個(gè)B類(lèi)的時(shí)候,那么A類(lèi)就可以從B類(lèi)繼承,例如“貓”繼承“動(dòng)物”,動(dòng)物類(lèi)是貓類(lèi)的父類(lèi)或基類(lèi),貓類(lèi)是動(dòng)物類(lèi)的子類(lèi)或派生類(lèi)。
多態(tài)性:多態(tài)就是對象的多種形態(tài)。在程序中可以出現重名現象,它指在一個(gè)類(lèi)中定義的方法和屬性被其他類(lèi)繼承,它們就有不同的數據類(lèi)型或表現出不同的行為,使得同一個(gè)屬性和方法在不同類(lèi)有不同的意義。
二、類(lèi)的定義
1.什么是類(lèi)?
物以類(lèi)聚,人以群分。類(lèi)是對一群具有相同特征或行為的事物的1個(gè)統稱(chēng)。是抽象的也不能直接使用。如果非要使用類(lèi)的話(huà)呢?只能去找這一類(lèi)事物中的一個(gè)具體存在,然后使用這個(gè)具體存在。
2.類(lèi)中可以定義成員變量和成員方法,其中成員變量用來(lái)描述對象的特征,也叫做屬性。成員方法用來(lái)描述對象的行為,稱(chēng)作方法。
3.如何定義一個(gè)類(lèi)
class Person{
int age;//定義int類(lèi)型變量age
//定義speak()方法
void speak(){
System.out.print("我今年"+age+"歲");
}
}
首先是定義了一個(gè)Person類(lèi),Person是類(lèi)名,age是成員變量,speak()成員方法。在成員方法可以訪(fǎng)問(wèn)成員變量的age。
4.定義在類(lèi)中的變量是成員變量,定義在方法中的變量局部變量。假設在某一個(gè)方法中定義局部變量跟成員變量的名是一樣的,這時(shí)方法訪(fǎng)問(wèn)的是局部變量而不是成員變量。
例如:
class Person{
int age=3;//成員變量
//定義speak()方法
void speak(){
int age=10;//局部變量
System.out.print("我今年"+age+"歲");
}
}
public class p13 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1=new Person();
p1.speak();
}
}
輸出的結果是:
我今年10歲
三、對象的創(chuàng )建和使用
1.什么是對象
對象是現實(shí)生活中的一個(gè)個(gè)具體存在.??吹靡?jiàn)、摸的著(zhù)。拿過(guò)來(lái)就可以直接使用。
2.創(chuàng )建對象的格式
類(lèi)名 對象名稱(chēng)=new 類(lèi)名();
例如:
Person p=new Person();
上面代碼中”new Person()”是創(chuàng )建Person類(lèi)的一個(gè)實(shí)例對象,”Person p”是Person類(lèi)的變量p。“=”表示Person對象在內存中的地址賦值給變量p。這個(gè)變量p就有了對象的引用。
3.創(chuàng )建對象后,可以通過(guò)對象的引用來(lái)訪(fǎng)問(wèn)對象的所有成員。
訪(fǎng)問(wèn)對象成員的格式
對象引用.對象成員
4.如何訪(fǎng)問(wèn)對象成員的案例
class Person{
int age;//成員變量
//定義speak()方法
void speak(){
System.out.println("我叫張三,今年"+age+"歲");
}
}
public class p13 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//創(chuàng )建兩個(gè)Person的對象
Person p1=new Person();//創(chuàng )建第一個(gè)Person對象
p1.age=8;//age屬性賦值
p1.speak();//調用對象的方法
Person p2=new Person();//創(chuàng )建第二個(gè)Person對象
p2.speak();//調用對象的方法
}
}
輸出的結果是:
我叫張三,今年8歲
我叫張三,今年0歲
四、總結
本文主要介紹了面向對象概念,面向對象的三個(gè)特點(diǎn)封裝性、繼承性、多態(tài)性。類(lèi)的定義和創(chuàng )建對象與使用。詳細的介紹了怎么去定義一個(gè)類(lèi),通過(guò)案例來(lái)理解怎么去定義的。對象的創(chuàng )建與使用介紹了使用的格式,通過(guò)創(chuàng )建對象后,可以通過(guò)對象的引用來(lái)訪(fǎng)問(wèn)對象的成員。希望大家通過(guò)本文的學(xué)習,對你有所幫助!