1、類與對象的了解:
類是對一類事物的描述,是抽象的,概念上的定義;對象是實際存在的該類事物的每個個體,是以也稱之為執行個體。如果将對象比作汽車,那麼類就好比汽車的設計圖紙。是以面向對象程式設計的重點是類的設計,而不是對象的設計。類對事物的屬性,也就是成員變量,操作屬性的方法,也就是成員函數進行了封裝,隻要通過new關鍵字建立對象麼就可以對對象的屬性進行指派,然後調用對象的方法進行各種操作,實作各種功能。這大概就是java面向對象三大特性之一即封裝。
2、執行個體講解:
package com.jwang.facetoobject;
public class Person
{
//定義一個成員變量
private int age;
//定義一個成員方法
public void shout()
{
System.out.println("my age is "+age);
//在一個類中的方法可以調用這個類中的其它方法
shout1();
}
public void shout1()
{
//局部變量必須賦初值才能使用
int age = -60;
//由于局部變量與成員變量同名,是以成員變量被覆寫,下面應該輸出-60
System.out.println("my age is "+age);
//在局部變量和全局變量相同時,如果要使用或者操作成員變量,可以采用this.成員變量的方式使用或者操作成員變量
System.out.println("my age is "+this.age);
}
public void shout2()
{
}
//main方法為JVM内置的方法,不屬于該類
public static void main(String [] args)
{
//通過new關鍵字來建立對象,new主要是配置設定堆記憶體
Person p1 = new Person();
Person p2 = new Person();
//給p1對象的屬性指派
p1.age = -30;
//通過對象的引用調用對象的方法
System.out.println("---------輸出p1相關資訊---------");
p1.shout();
System.out.println("---------輸出p2相關資訊---------");
p2.shout();
}
}
3、測試結果:
4、分析以及說明:
(1)類将屬性(變量),方法(函數)封裝在一起,供對象使用
(2)成員變量又可以了解為類中對象的屬性。可以是基本資料類型,也可以是對象,集合,數組等
定義方式:private/public+資料類型+變量名;
一般系統會自動賦初值,是以定義時一般不會指派,在對象調用時才對他指派。成員變量相當于全局變量,按理說全局變量在使用前要賦初值,但java中jvm會對成員變量自動賦初值,如整形一般賦初值為0.
(3)方法又叫成員函數,是對象完成某一操作的一個方法。
定義方式:private/public+傳回值類型+函數名(資料類型1 變量1,資料類型2 變量2....)
(4)如果方法中也定義了與成員變量同樣的局部變量,則局部變量會覆寫全局變量,除非在方法内部使用this關鍵字
(5)同類中的方法可以直接通路其中的成員變量。也可以通路同類中的其他方法。
(6)對象的建立方式:類名+對象名=new+類名();eg:person pi=new preson();pi實際上是對象的引用句柄,或者稱為引用變量,可以粗略當成就是一個對象。new關鍵字相當于配置設定堆記憶體的一個關鍵字。是以對象和數組一樣都是被定義在堆記憶體中的。
(7)當一個對象被建立的時候,類中的成員變量會自動初始化,而方法中定義的局部變量必須認為初始化才可以使用。
(8)通過句柄來引用類中對象的屬性和方法。引用句柄也可以看成是一個變量,他被定義在棧記憶體中,存放的是對象中變量的首位址。這樣對象就可以通過(句柄.變量或方法)的方式來使用其屬性和方法完成一系列功能。
(9)main函數/方法可以放在任何類中,但不屬于此類的成員函數。main函數放在那一個類中,那個類就是啟動運作類。
(10)對象存儲記憶體分析:
因為P1和p2是兩個對象,是以各自有各自的存儲,如下圖所示:
5、public及private關鍵字:
(1)使用說明:
public關鍵字可以修飾類,使用public修飾類時,類名要和源檔案中的名稱一緻。并且一個源檔案中隻能有一個public修飾的類
public關鍵字可以修飾方法和屬性,通過public修飾的屬性和方法可以在其它類中調用,一般為了安全性考慮,類的屬性都是private的,而方法是public的。提供get,set方法供外邊的類來操作本類中的屬性。
private一般用來修飾方法和屬性,用private修飾的方法和屬性隻能在本類中使用和操作,不能在其它類中通路。
(2)程式設計例子:
package com.jwang.facetoobject;
public class People
{
//定義兩個私有的成員變量
private String name ;
private int age;
//定義一個公有的成員變量
public String sex;
//定義一個公有的擷取name的方法
public String getName()
{
return name;
}
//定義一個公有的設定name的方法
public void setName(String name)
{
this.name = name;
}
//定義一個公有的擷取age的方法
public int getAge()
{
return age;
}
//定義一個公有的設定age的方法
public void setAge(int age)
{
this.age = age;
}
}
測試結果:
6、匿名對象:
new TestPeople().test();在上面的程式中建立了匿名對象,并調用test方法,匿名對象就是不需要申明對象的引用,而直接通過new關鍵字建立對象。