java275 03第三章面向對象基礎_第1頁
java275 03第三章面向對象基礎_第2頁
java275 03第三章面向對象基礎_第3頁
java275 03第三章面向對象基礎_第4頁
java275 03第三章面向對象基礎_第5頁
已閱讀5頁,還剩34頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Java275——認識Java第三章面向對象基礎目標:類和對象的關系;構造方法的特征和作用;對象創建的內存模型。學時:4學時教學方法:講授ppt+上機練習類和對象的關系面向對象的思想(

Object

Oriented

Programming,簡稱

OOP)面向對象的基本思想是,從現實世界中客觀存在的事物出發來構造軟件系統,并在系統的構造中盡可能運用人類的自然思維方式面向對象更加強調運用人類在日常的思維邏輯中經常采用的思維方法與原則面向對象的三個特征封裝繼承多態類和對象的關系面向對象與面向過程public

class

Icebox

{static

void

putThings(String

things){System.out.println("把冰箱門打開");System.out.println("把"+things+"放進來");System.out.println("把冰箱門關上");}}void

OpenIcebox(){printf(“把冰箱門打開\n");}void

PutElephantI(){printf(“把大象放冰箱\n");}void

CloseIcebox(){printf(“把冰箱們關上\n");}int

main(){OpenIcebox();PutElephantIn();CloseIcebox();}public

class

Mine

{public

static

void

main(String

args[]){Icebox.putThings("大象");}}面向對象面向過程Icebox.javaMine.javaputElephantBox.c類和對象的關系類的定義把相似的對象劃歸成一個類。在軟件設計中,類,就是一個模板,它定義了通用于一個特定種類的所有對象的屬性(變量)和行為(方法)。類和對象的關系類的定義[訪問權限控制符]class類名{類的成員…}修飾符一般為public,也可以沒有修飾符。注意類名的命名規范。類名一般大寫類的成員:成員變量(屬性)成員方法(方法)通過“.”調用屬性和方法類和對象的關系類的定義Employee.javaclass

Employee

{String

name;intage;

double

salary;public

String

showName(){System.out.println(name);returnname;}public

int

showAge(){System.out.println(age);returnage;}public

voidupdateName(String

name2){name=

name2;}public

void

getSalary(){System.out.println("The

salary

of

this

month

is

2000");}}屬性方法類和對象的關系類的定義?

練習

Person.java定義一個Person類,Person類具有名字、年齡及性別等屬性,并具有一個getInfo()方法可以打印出Person類的屬性,sayHello()方法和大家說“Hello

everybody!”PersonnameagesexgetInfo()sayHello()類和對象的關系類的定義?

練習

MyDate.java

定義一個點類MyDate,包含三個成員變量year、month、day分別表示年、月、日,以及每個屬性對應的get和set方法(如,

year有getYear()方法用來獲得日期的年份,還有setYear(inty)方法用來修改或設置日期的年份),最后還有printDate()方法,調用該方法可以把日期按照“yyyy-mm-dd”的形式輸出。Java中的關鍵字this關鍵字代表對象自身的引用一個引用指向調用該方法的當前對象通常在類的方法定義中使用用this關鍵字的情況方法中的變量與成員變量重名在一個構造方法中,調用其它重載的構造方法返回當前對象的引用示例

Dog.java類和對象的關系類和對象的關系類(class)

—是對某一類事物的描述對象(object)

—是實際存在的某類事物的個體,也稱為實例(instance)類是創建對象的模板,對象是類的實例。類和對象的關系對象的創建語法格式示例TestEmployee.java類名對象名=new

構造函數Employee

zhang

=

new

Employee(

)類和對象的關系對象的創建?

練習

TestPerson.java在TestPerson類里寫一個main方法,在main()方法中:創建一個Person類的對象這個對象的名字叫小沈陽,年齡28,性別男在控制臺中打印這個實例的信息并調用這個對象的sayHello()方法,向大家問好類和對象的關系對象的創建?

練習

TestDate.java在TestDate類里寫一個main方法,在main()方法中:創建一個MyDate類的對象

通過setXXX()將該日期對象的時間設置為“2009年12月25日”在控制臺上打印該對象的月份把該日期對象按“2009-12-25”的格式輸出類和對象的關系匿名對象創建完對象,在調用該對象的方法時,也可以不定義對象的句柄,而直接調用這個對象的方法。這樣的對象叫匿名對象使用匿名對象的情況如果對一個對象只需要進行一次方法調用newPerson().sayHello()Person

p1

=

new

Person();p1.sayHello();方法的重載方法的重載(overload)函數的重載就是在同一個區域內同名但參數(個數、類型或順序)不同的多個方法互為重載,與返回值類型無關。方法重載的規則函數名稱相同函數的參數必須不同參數個數不同

參數類型不同

參數順序不同函數的返回值類型可以相同,也可以不同方法的重載方法的重載(overload)FuncSum.java方法的重載?

練習下列選項中,哪些可以與void

setAge(int

year,int

month,int

day)方法在同一個類中定義

?A.

public

void

setAge()

{ B.

void

setAge(int

age)

{}

}C.

void

setAge(int

y,int

m,int

d){ D.

int

setAge(Date

d)

{}

}E.

int

setAge(int

year,int

month,int

day){}F.

void

setage(intyear,intmonth,int

dat){}答案:ABDF方法的重載?

練習

Person.java在上一個Person類的基礎上,完成以下功能:聲明一個有參的構造方法,使得通過調用該構造方法可以對Person類的三個成員變量進行初始化再聲明一個無參的構造方法,實現構造方法的重載PersonnameagesexgetInfo()sayHello()方法的重載?

練習MethodAdd.java在類MethodAdd中,聲明三個方法add,分別計算兩個整數的和三個整數的和、兩個雙精度浮點數(double)數的和,并在該類寫一個主程序中調用這個三個函數,并將其結果打印構造方法構造方法(構造函數/構造器,Constructor)與類同名有參數,經常重載不返回值通常是public的,但是private的也有意義不能直接調用,通過new調用在一個類中,具有上述特征的方法就是構造方法。構造方法的作用完成對象的創建,即完成對象的實例化一般使用構造方法來完成對成員變量的初始化示例

Employee.javaPersonnameagesexgetInfo()sayHello()構造方法構造方法普通方法普通方法構造方法public

void

Employee(){……}public

Employer(

){……}public

Employee

(Stringname,intage){……}publicEmployee(){……}構造方法默認的構造方法在Java中,每個類都至少要有一個構造方法,如果程序員沒有在類里定義構造方法,系統會自動為這個類產生一個默認的構造方法;一旦編程者為該類定義了構造方法,系統就不再提供默認的構造方法class

Employee{……public

Employee(

)

{}……}class

Employee{}構造方法?

練習下列關于類的定義的選項中,哪些可以通過new

Thing()方法來創建該類的一個對象

?A.

public

class

Thing

{B.

public

class

Thing

{publicThing()

{}}D.

public

classThing

{public

Thing(String

s)

{}}}C.

public

classThing

{public

Thing(void)

{}}E.

public

class

Thing

{

public

void

Thing()

{}public

Thing(String

s)

{}}答案:A、B構造方法?

練習給定下列代碼的執行結果是

?public

class

A{void

A()

{System.out.println(“Class

A”);}public

static

void

main(String[]

args)

{new

A();}}A.

Class

AC.

編譯錯誤B.

在第2行處拋出異常D.

在第6行處拋出異常E.

代碼執行后沒有輸出答案:E對象創建的內存模型0x30000x80000x3000nameageheight“lisi”441.74……“zhang”331.73nameageheightPerson

qPerson

p0x8000引用類型變量的內存模型Personp=newPerson(

“zhang”,

33,1.73);Personq=newPerson(

“lisi”,

44,

1.74);對象創建的內存模型引用類型變量除了8種基本數據類型的變量,其他變量都是引用類型變量類(class)接口(interface)數組Person

p

;Animala;int[

]

c

;對象創建的內存模型0x8000“lisi”441.74Person

p0x8000nameageheightPerson

p

=

new

Person(“lisi”,

44,1.74);引用類型變量的內存模型程序執行過程硬盤程序.java編譯.class

文件內存③執行過程中的內存管理代碼JVM系統代碼stackheapdatasegmentcodesegment基本數據類型變量引用類型變量地址引用變量靜態變量常量存放代碼Java代碼在系統中的執行過程垃圾回收機制垃圾回收器(GC,Garbage

Collection)Java的一個重要特點句是具有一個垃圾回收器,并且能夠自動回收垃圾,這也是Java相對于其他語言有優勢的地方對內存的釋放和回收的工作是由Java運行系統(JRE)承擔的,不用編程者關注在Java程序運行過程中,一個垃圾回收器會不定時地被喚起檢查是否有不再被使用的對象,并釋放它們所占用的內存空間垃圾回收器的啟用不由程序員控制,也無規律可循垃圾回收機制垃圾回收機制—System.gc()、nullJava里提供了一個System.gc()方法,使用這個方法可以建議垃圾回收器回收垃圾在Java中,可以通過將對象的引用變量設置為null,來暗示垃圾回收器來回收cl該ass對Em象ployee{String

name;int

age;double

salary;publicstaticvoidmain(Stringargs[]){Employeee=

newEmployee();e

=

null;System.gc();System.out.println(“The

program

is

end”);}}垃圾回收機制后臺線程主線程Object

o2

=

new

Object(

);o2

=

null;Object

o1

=

new

Object(

);o1objectThe

heap檢查出對象沒有引用指向調用o2對象的finalize()方法垃圾回收機制回收分配給該對象的內存垃圾回收采用Java多線程機制o2object×垃圾回收機制垃圾回收機制?

練習什么時候程序會銷毀一個對象x

?A.

x.delete()B.

x.finalize()C.

System.gc()D.

設置對象的引用為nullF

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論