天天看點

面向對象

1:成員變量和局部變量的差別(了解)

(1)在類中的位置不同

成員變量:類中方法外

局部變量:方法定義中或者方法聲明上

(2)在記憶體中的位置不同

成員變量:在堆中

局部變量:在棧中

(3)生命周期不同

成員變量:随着對象的建立而存在,随着對象的消失而消失

局部變量:随着方法的調用而存在,随着方法的調用完畢而消失

(4)初始化值不同

成員變量:有預設值

局部變量:沒有預設值,必須定義,指派,然後才能使用

2:類作為形式參數的問題?(了解)

(1)如果你看到一個方法需要的參數是一個類名,就應該知道這裡實際需要的是一個具體的對象。

3:匿名對象(了解)

(1)沒有名字的對象

(2)應用場景

a:調用方法,僅僅隻調用一次的時候。

b:可以作為實際參數傳遞。

4:封裝(了解)

(1)隐藏實作細節,提供公共的通路方式

(2)好處:

a:隐藏實作細節,提供公共的通路方式

b:提高代碼的複用性

c:提高代碼的安全性

(3)設計原則

把不想讓外界知道的實作細節給隐藏起來,提供公共的通路方式

(4)private是封裝的一種展現。

封裝:類,方法,private修飾成員變量

5:private關鍵字(掌握)

(1)私有的意義,可以修飾成員變量和成員方法

(2)特點:

被private修飾的後的成員隻能在本類中被通路

(3)private的應用:

以後再寫一個類的時候:

把所有的成員變量給private了

提供對應的getxxx()/setxxx()方法

6:this關鍵字(掌握)

(1)代表目前類的引用對象

記住:哪個對象調用方法,該方法内部的this就代表那個對象

(2)this的應用場景:

a:解決了局部變量隐藏成員變量的問題

b:其實this還有其他的應用,明天講解。

7:構造方法(掌握)

(1)作用:用于對對象的資料進行初始化

(2)格式:

a:方法名和類名相同

b:沒有傳回值類型,連void都不能有

c:沒有傳回值

思考題:構造方法中可不可以有return語句呢?

可以。而是我們寫成這個樣子就ok了:return;

其實,在任何的void類型的方法的最後你都可以寫上:return;

(3)構造方法的注意事項

a:如果我們沒寫構造方法,系統将提供一個預設的無參構造方法

b:如果我們給出了構造方法,系統将不再提供預設構造方法

如果這個時候,我們要使用無參構造方法,就必須自己給出。

推薦:永遠手動自己給出無參構造方法。

(4)給成員變量指派的方式

a:setxxx()

b:帶參構造方法

(5)标準案例

class student {

private string name;

private int age;

public student(){}

public student(string name,int age) {

this.name = name;

this.age = age;

}

public string getname() {

return name;

public void setname(string name) {

public int getage() {

return age;

public void setage(int age) {

測試:

class studentdemo {

public static void main(string[] args) {

//方式1

student s1 = new student();

s1.setname("林青霞");

s1.setage(27);

system.out.println(s1.getname()+"---"+s1.getage());

//方式2

student s2 = new student("劉意",30);

system.out.println(s2.getname()+"---"+s2.getage());

8:代碼:student s = new student();做了哪些事情?(了解)

(1)把student.class檔案加載到記憶體

(2)在棧記憶體為s開辟空間

(3)在堆記憶體為學生對象申請空間

(4)給學生的成員變量進行預設初始化。null,0

(5)給學生的成員變量進行顯示初始化。林青霞,27

(6)通過構造方法給成員變量進行初始化。劉意,30

(7)對象構造完畢,把位址指派給s變量

9:面向對象的練習題(掌握)

(1)标準的手機類的定義和測試

(2)demo類有求和方法,test類進行測試。

什麼時候定義成員變量?

當該變量是用來描述一個類的時候。

(3)長方形案例

(4)員工案例

(5)mymath案例(自己提供加減乘除并測試)

10:static關鍵字(了解)

(1)靜态的意思。可以修飾成員變量和成員方法。

(2)靜态的特點:

a:随着類的加載而加載

b:優先與對象存在

c:被類的所有對象共享

這其實也是我們判斷該不該使用靜态的依據。

舉例:飲水機和水杯的問題思考

d:可以通過類名調用

既可以通過對象名調用,也可以通過類名調用,建議通過類名調用。

(3)靜态的記憶體圖

靜态的内容在方法區的靜态區

(4)靜态的注意事項;

a:在靜态方法中沒有this對象

b:靜态隻能通路靜态(代碼測試過)

(5)靜态變量和成員變量的差別

a:所屬不同

靜态變量:屬于類,類變量

成員變量:屬于對象,對象變量,執行個體變量

b:記憶體位置不同

靜态變量:方法區的靜态區

成員變量:堆記憶體

c:生命周期不同

靜态變量:靜态變量是随着類的加載而加載,随着類的消失而消失

成員變量:成員變量是随着對象的建立而存在,随着對象的消失而消失

d:調用不同

靜态變量:可以通過對象名調用,也可以通過類名調用

成員變量:隻能通過對象名調用

(6)main方法是靜态的

public:權限最大

static:不用建立對象調用

void:傳回值給jvm沒有意義

main:就是一個常見的名稱。

string[] args:可以接收資料,提供程式的靈活性

格式:java maindemo hello world java

 java maindemo 10 20 30

#####################################################################################

1:局部變量和成員變量的差別?

a:在類中位置不同

b:在記憶體中位置不同

d:初始化值不同

2:形式參數分别為基本類型和引用類型的問題?

形式參數:基本類型 形參的改變不影響實際參數

形式參數:引用類型 形參的改變直接影響實際參數

如果一個方法的形式參數是一個類的名稱,那麼這裡需要的是該類的對象。

3:匿名對象是什麼?應用場景是什麼?

沒有名字的對象。

應用場景:

a:調用方法,僅僅調用一次的時候

b:作為實際參數傳遞

4:封裝是什麼?java中封裝的展現有哪些?請舉例說明。

封裝:隐藏實作細節,提供公共的通路方式。

封裝的展現:

類,方法,private修飾成員變量

5:this關鍵字是什麼?this關鍵字的應用場景?

this:代表目前類的對象應用

應用場景:解決局部變量隐藏成員變量的問題

6:構造方法的作用是什麼?構造方法的特點是什麼?

構造方法的注意事項是什麼?構造方法中可不可以寫return語句呢?

作用:用于對對象的資料進行初始化

特點:

注意事項:

a:如果我們不給構造方法,系統就提供一個預設的無參構造方法

b:如果我們給出了構造方法,系統就不再提供預設構造方法

這個時候我們想用,就要自己提供。建議自己提供無參構造方法。

//getxxx/setxxx

構造方法可以有return語句,但是不能有明确的傳回值。也就是說return;

7:給成員變量指派有幾種方式?

8:标準的代碼編寫及測試:

a:學生類的案例

b:手機類的案例

c:長方形類的案例

student s = new student();

s.setname("林青霞");

s.setage(27);

system.out.println(s.getname()+"---"+s.getage());

9:一個類的成員變量初始化過程

a:把student.class檔案加載到記憶體(類加載器)

b:在棧記憶體為s開辟空間

c:在堆記憶體為學生對象申請空間

d:給學生對象的成員變量進行預設初始化

e:給學生對象的成員變量進行顯示初始化

f:通過構造方法給學生對象的成員變量進行初始化

g:把堆記憶體的位址指派給s變量

10:static關鍵字是什麼?有什麼特點?什麼時候用呢?

static靜态的意思,可以修飾成員變量和成員方法。

c:被所有對象共享

什麼時候用?

a:當一個成員被所有對象共享的時候。

b:工具類的時候。

11:靜态變量和成員變量的差別

12:main方法各種修飾符及參數的解釋?

public:權限修飾符,權限最大

static:可以不用建立對象

void:傳回值給jvm無意義

main:一個方法名,大家都預設的

string[] args:接收鍵盤錄入對象

####################################################################################

test

輸出:

y

x

z

test2

zi

30

20

10

test3

靜态代碼塊fu

靜态代碼塊zi

構造代碼塊fu

構造方法fu

構造代碼塊zi

構造方法zi