第4章 Java與面向?qū)ο蠹夹g(shù)09級(jí)_第1頁(yè)
第4章 Java與面向?qū)ο蠹夹g(shù)09級(jí)_第2頁(yè)
第4章 Java與面向?qū)ο蠹夹g(shù)09級(jí)_第3頁(yè)
第4章 Java與面向?qū)ο蠹夹g(shù)09級(jí)_第4頁(yè)
第4章 Java與面向?qū)ο蠹夹g(shù)09級(jí)_第5頁(yè)
已閱讀5頁(yè),還剩141頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java

Java與面向?qū)ο蠹夹g(shù)

口類(lèi)的定義與對(duì)象的創(chuàng)建

口構(gòu)造方法的作用及應(yīng)用

口面向?qū)ο笕筇卣鞯膶?shí)現(xiàn)

口抽象類(lèi)與接口的應(yīng)用

口包的創(chuàng)建與使用

口訪問(wèn)控制符的應(yīng)用

Java重點(diǎn)及難點(diǎn)

口構(gòu)造方法的作用及應(yīng)用

口面向?qū)ο笕筇卣鳎悍庋b性、繼

承性和多態(tài)性的Java語(yǔ)言實(shí)現(xiàn)

口抽象類(lèi)與接口的應(yīng)用

口異常處理

&

Java2.2對(duì)象的基本概念

對(duì)象具有兩方面的含義(考慮從哪些方面描述對(duì)象)

Java類(lèi)的基本概念

口具有相同特征和行為的對(duì)象被抽象為類(lèi)。

口類(lèi)是對(duì)象的模板,包括一個(gè)對(duì)象的所有數(shù)

據(jù)和代碼。

類(lèi)是抽象的,對(duì)象是具體的

對(duì)象

Java

量對(duì)象的示例

Java

0姓名:布蘭尼

職銜:收銀員

年齡:35

體重:60千克

操作:

收款

打印帳單

行為

消息傳遞

Java

贏類(lèi)和對(duì)象的示例

雇員

收銀員系統(tǒng)管理員倉(cāng)庫(kù)管理員促銷(xiāo)員采購(gòu)經(jīng)理

Java面向?qū)ο蠹夹g(shù)的實(shí)現(xiàn)

對(duì)象、類(lèi)和實(shí)體的關(guān)系

/計(jì)算機(jī)世界\

現(xiàn)實(shí)世界

映射

對(duì)象實(shí)體

I實(shí)例化]:抽象

抽象

計(jì)算機(jī)邏輯的實(shí)現(xiàn)

類(lèi)抽象數(shù)據(jù)類(lèi)型

類(lèi)是創(chuàng)建對(duì)象的模板,對(duì)象是類(lèi)的實(shí)例

Java類(lèi)的基本概念

贏類(lèi)定義

[修飾符]class類(lèi)名[extends父類(lèi)名]]

[implements接口名表],

成員變量聲明

成員方法聲明

其中cIass>extends和impIements都是Java的關(guān)鍵字。

類(lèi)的修飾符:[public|friendly][abstract][final]

缺省方式為friendly|package

聲明成員變量

Java

聲明成員變量格式為:

[〈修飾符〉]〈變量類(lèi)型〉〈變量名〉;

[public|protected|private][static][final]

[transient][volatile]缺省為:friendly(package

publicclassDatel〃類(lèi)聲明

{、

intyear,month,day;〃成員變量

Java聲明成員方法

類(lèi)的行為由其方法實(shí)現(xiàn),其他對(duì)象可以調(diào)用對(duì)象的方法來(lái)得

到該對(duì)象的服務(wù)。類(lèi)中需要定義成員方法的聲明和實(shí)現(xiàn)。

[〈修飾符>]<返回值類(lèi)型〉〈方法名>([〈參數(shù)表〉])[throws〈異常類(lèi)〉]

〈方法體〉

方法修飾符為:[public]protected|private][static]

[final|abstract][native][synchronized]

缺省為:friendly|package

oysiern.oui.pnnurnuaieisfyear+--i-rrionui-f-+uay;;

毫□方法的返回值

JclVCI

return表達(dá)式;

return;

publicclassDatel

{

intyear,month,day;

booleanisleapyear()//判斷年份是否為閏年

{booleanlean;

lean=(year%400==0)|(year%100!=0)&(year%4==0);

returnlean;

}

}

publicclassDatel

intyear,month,day;

例voidsetdate(inty,intm,intd)〃設(shè)置日期值

(

year=y;month=m;day=d;

聲}

明booleanisleapyear()〃判斷年份是否為閏年

{

booleanlean;

期lean=(year%400==0)|(year%100!=0)&(year%4==0);

類(lèi)returnlean;

}

voidprint()〃輸出日期值

System.out.println(ndateis''+year+'-'+month+'-'+day);

}

Java類(lèi)的實(shí)現(xiàn)

定義一個(gè)名為Rectangle表示長(zhǎng)方形的類(lèi),

它包含doubIe類(lèi)型的長(zhǎng)Iength和寬width兩

個(gè)數(shù)據(jù)成員和設(shè)置長(zhǎng)方形長(zhǎng)寬值的方法

setDimO>計(jì)算長(zhǎng)方形面積的方法area()。

嬴練習(xí)題

定義Student類(lèi)如下:

1.屬性包括:學(xué)號(hào),出生年份,數(shù)學(xué)成績(jī),

英語(yǔ)成績(jī)和計(jì)算機(jī)成績(jī)。

2.方法包括:

1)設(shè)置初值。

2)sum方法(計(jì)算并輸出總成績(jī))

2)age方法(計(jì)算年齡)

彘變量的作用范圍

jdVci

AJava允許在任何一個(gè)程序塊中聲明變量,該變量的

作用范圍就是聲明該變量的程序塊,在作用域之外,

不能訪問(wèn)該變量。

?方法體中聲明的局部變量的作用域在該方法內(nèi)部。

不是類(lèi)的成員變量。classAbc{.

inta,b,c,x=5;x為局部變量,作

若局部變量與類(lèi)的‘..〃\r用域在方法f內(nèi)

voidf(){-------------------

成員變量同名,intx=10;

則類(lèi)的成員變量被隱藏。System.out.printlnf'x="+x);

)

嬴方法和變量的作用域

在Java語(yǔ)言中,方法與變量的作用域,根據(jù)

定義的位置不同,作用域也不全相同。當(dāng)一

個(gè)方法使用某個(gè)變量時(shí),以如下的順序查找

變量:

import類(lèi)和包

各級(jí)父類(lèi).

當(dāng)前類(lèi)廠2222^

當(dāng)前方法

publicclassDatel

{

intyear,month,day;

voidsetdate(intyjntm,intd)〃設(shè)置日期值

year=y;month=m;day

}

booleanisleapyear()〃判斷年份是否為閏年

booleanlean;

lean=(year%400==0)|(year%100!=0)&(year%4==0);

returnlean;

voidprint()〃輸出日期值

System.out.printingdateis''+year+'-'+month+'-'+day);

}

4、

publicclassDatel

{

:二

voidsetdate(inty/ntmzintd)

聲{intyear,month,day;

明year=y;month=m;day=d;

日}

booleanisleapyear()

(

類(lèi)return(year%400==0)|(year%100!=0)&(year%4==0);

}

voidprint()

(

System.out.println(ndateis''+year+'-'+month+'-'+day);

}

Java對(duì)象的聲明與創(chuàng)建

s

創(chuàng)建對(duì)象

inti;i0

Datela;anull

a=newDate1();a0x03456789yearo

montho

dayo

<

急成員變量初始化

JdVd

當(dāng)類(lèi)中的某個(gè)成員基本數(shù)據(jù)類(lèi)型缺省初值

變量屬于基本數(shù)據(jù)booleanfalse

類(lèi)型時(shí),即使沒(méi)有char'\0'(null)

為它提供初值,byte(byte)O

Java也保證它有一short(short)O

個(gè)初始值。int0

longOL

publicclassDatelfloatO.Of

intyear,month,day;DoubleO.Od

)引用類(lèi)型null

另外執(zhí)行構(gòu)造方法,可進(jìn)行初始化

嬴對(duì)象的使用

訪問(wèn)對(duì)象成員的一般形式為:

對(duì)象名.成員變量名

對(duì)象名.成員方法名()

運(yùn)算符”.”在這里稱(chēng)為成員運(yùn)算符

魚(yú)對(duì)象的使用

Java

□引用成員變量publicclassDatel

intyear,month,day;

voidsetdate(intyintm,intd)

v對(duì)象名〉,〈變量名〉z(mì)

year=y;

month=m

a.year=2006;day=d;

a.month=3;}

;

a.day=6;Datela=newDate1()

a0x03456789year

a.day++;month

day

調(diào)用成員方法

工格式:〈對(duì)象名〉.V方法名>([<參數(shù)表>])

publicclassDatel

上參數(shù)傳遞一一值<

intye3rzmonth,day;

void$etdate(intyjntmjntd)〃設(shè)置日期值

{

year=y;mouth=m:day=<1:

a,setdate(2006,|

booleani$leapyear()〃判斷年份是否為閨年

booleanlenn:

lean=(yeai°o400==0)|(year°ol00!=0)&(ye;uoo4==0):

letiunlean:

)

voidprint()〃輸出日期值

i

morSystem.outpi'iiiHii(,,(Iateis**+year+*-*+mo?tk+*-*+<lay);

}

a0x03456789year

month

day

publicclassDatel

intyeai7monthzday;

voidsetdate(inty,intm,intd)

■例{year=y;month=m;day=d;

:booleanisleapyear()

聲{return(year%400==0)|(year%100!=0)&(year%4==0);

明}

為voidprint()

□{System.out.println(ndateis"+year+'」+month+'」+day);

期}

來(lái)publicstaticvoidmain(Stringargs[])

{Datela=newDatel();

a.setdate(2006,3?6);

a.printQ;

System.out.println(a.year+nisaleapyear,n+a.isleapyear());

嬴對(duì)象的構(gòu)造和初始化

在用new生成對(duì)象實(shí)例時(shí):

〈變量名〉=new〈類(lèi)名〉(參數(shù)表);

系統(tǒng)自動(dòng)初始化所有變量,步驟為:

-分配新對(duì)象的空間,并進(jìn)行默認(rèn)的初始化

-執(zhí)行顯式的成員初始化

■執(zhí)行構(gòu)造方法

晶默認(rèn)的初始化

基本數(shù)據(jù)類(lèi)型缺省初值

實(shí)例化對(duì)象時(shí),booleanfalse

系統(tǒng)會(huì)對(duì)成員char'\0'(null)

byte(byte)O

變量進(jìn)行默認(rèn)

short(short)O

的初始化。int0

longOL

floatO.Of

DoubleO.Od

引用類(lèi)型null

<

Java顯式成員初始化

例如:在Datel類(lèi)的定義中,若有:

classDatel

{intyear=2011;

則實(shí)例化a時(shí):

Datela=newDatel();

a.year的值被初始化為2011。

構(gòu)造方法

Java

在Java中,任何變量在被使用前

都必須先設(shè)置初值。Java提供了

為類(lèi)的成員變量賦初值的專(zhuān)門(mén)功

能:構(gòu)造方法。

構(gòu)造方法

Java

作用:對(duì)成員變量進(jìn)行初始化。

構(gòu)造方法的名字必須與類(lèi)名相同。

-構(gòu)造方法沒(méi)有返回值,并且沒(méi)有void修飾符。

■在實(shí)例化對(duì)象的時(shí)候由new運(yùn)算符自動(dòng)調(diào)用。

對(duì)象名=new類(lèi)名(參數(shù)表);

:

使publicclassDate2

voidsetdate(inty,intm,intd)

用{intyear,month,day;

{year=y;month=m;day=d;}

構(gòu)Date2(inty5intm,intd)

{year+monthvm;day=d;}

造、;

voidprint()\\\

{System.ouujH-innn(noateis"+year+'-'+month+'-'+day);

classDate2_ex\\\

期{publicstaticvoidmain(StHng\rgs[])

賦{Date2a=newDate2(2006,3,6);

a.print();Date2a=newDate2();”

a.setdate(2006,396);

棄構(gòu)造方法的說(shuō)明

Java

>一個(gè)類(lèi)中可以有多個(gè)具有不同參數(shù)列表的構(gòu)造方法。色

>若一個(gè)類(lèi)沒(méi)有構(gòu)造方法,系統(tǒng)會(huì)自動(dòng)為類(lèi)生成一個(gè)

默認(rèn)的構(gòu)造方法,其參數(shù)列表及方法體均為空。

Date2(){}

>如果程序員在類(lèi)中定義了一個(gè)以上的構(gòu)造方法,則

自動(dòng)屏蔽掉默認(rèn)的構(gòu)造方法。

>程序員定義的構(gòu)造方法中,最好包括一個(gè)參數(shù)表為日

空的構(gòu)造方法,否則在調(diào)用newXxxx()時(shí)會(huì)出錯(cuò)。

>構(gòu)造方法不能繼承。’

①|(zhì)注意:一旦我們自己定義了構(gòu)造方法,系統(tǒng)將不再為|—

->我們提供默認(rèn)的不帶參數(shù)的構(gòu)造方法。㈢

JapublicclassDate2

{intyear,month,day;

Date2(inty,intm,intd)

{yearmlsmthXm;day=d;}

Date2(int\

{year=ykmX

Date2(inty)\\\\\

{year=y;}\

publicstaticvoid[])

{Date2a=newDatez^ob^.3,6);

Date2b=newDate2(2006,3);

<

publicclassDate2

{intyear,month,day;

Date2(inty,intm,intd)

{year=y;month=m;day=d;}

Date2(inty,intm)

{year=y;month=m;}

Date2(inty)

{year=y;}

Date2(){}

publicstaticvoidmain(Stringargs[])

{Date2a=newDate2(2006,3,6);

Date2a=newDate2(2006,3);

Date2a=newDate2();

為Date2類(lèi)添加一個(gè)構(gòu)造方法,要求能夠?qū)λx初值

進(jìn)行檢驗(yàn):月份在1?12之間,日期在1?31之間。

publicclassDate!

{intyear,month,day;

Date2(inty,intm,intd)

{year=y;

month=(((m>=l)&(m<=12))?m:1);

day=(((d>=l)&(d<=31))?d:1);

嬴任務(wù)二實(shí)現(xiàn)

通過(guò)構(gòu)造方

classTestPerson

法賦初值

publicstaticvoidmain(String[]args)

Hersonpl=newHerson("lom");

Personp2=newPerson("John",20);

Personp3=newPerson("Bob",22,',male");

System.out.println(p1.name+p1.age+p1.sex);

System.out.println(+p2.age+p2.sex);

System.out.println(+p3.age+p3.sex);

}

}

嬴對(duì)象的銷(xiāo)毀

>Java的垃圾回收機(jī)制自動(dòng)判斷對(duì)象是否在使用,

并能夠自動(dòng)銷(xiāo)毀不再使用的對(duì)象,收回對(duì)象所

占的資源。

>程序中也可以使用析構(gòu)方法巾nalize()隨時(shí)銷(xiāo)毀

一個(gè)對(duì)象,將資源還給系統(tǒng)。

對(duì)象的銷(xiāo)毀

Java

finalize方法的說(shuō)明方式如下:

protectedvoidfinalize()throwsThrowable

{…}

■finalize方法,沒(méi)有參數(shù),也不返回值。

■一個(gè)類(lèi)只能有一個(gè)finalize()。

protectedvoidfinalize()、

{

System,out.printin(uhavebeencolldc/ed’?)

急2.4.1類(lèi)的封裝

□封裝(encapsulation):類(lèi)的設(shè)計(jì)者把類(lèi)設(shè)計(jì)

成一個(gè)黑匣子,使用者只能看見(jiàn)類(lèi)中定義的公

共方法,而看不見(jiàn)方法的實(shí)現(xiàn)細(xì)節(jié),也不能直

接對(duì)類(lèi)中的數(shù)據(jù)進(jìn)行操作。

□封裝的目的

>隱藏類(lèi)的實(shí)現(xiàn)細(xì)節(jié);

>迫使用戶通過(guò)接口去訪問(wèn)數(shù)據(jù);

>增強(qiáng)代碼的可維護(hù)性。

如何封裝

Java

1.訪問(wèn)權(quán)限

2.設(shè)置類(lèi)的訪問(wèn)權(quán)限

3.設(shè)置類(lèi)成員的訪問(wèn)權(quán)限

Java包

口包(package)是Java提供的一種區(qū)別類(lèi)名字

空間的機(jī)制,是類(lèi)的組織方式。

口包對(duì)應(yīng)一個(gè)文件夾,包中可以再有包,

稱(chēng)為包等級(jí)。

口同一個(gè)包中的類(lèi)名不可以重復(fù),不同包中的類(lèi)

名可以相同。

口有助于避免命名沖突。

彘包

口Java中預(yù)定義了許多包,常用的有:

java.lang語(yǔ)言包,提供Object、String等基礎(chǔ)類(lèi)

java.util實(shí)用包,提供日期類(lèi)等實(shí)用類(lèi)

java.awt抽象窗口工具包

java,text文本包

java.io輸入輸出流的文件包

java.appletApplet應(yīng)用程序包

網(wǎng)絡(luò)功能包

J哥創(chuàng)建包

語(yǔ)法格式如下:

package[包名1[.包名2[.[…皿

注意:在Java程序中,package語(yǔ)句必須

是程序的第一條非空格、非注釋語(yǔ)句。

贏創(chuàng)建包舉例

packagemypackage.personmanage;----------------------------------------?聲明包

publicclassPerson

{

publicStringname;

publicintage;

publicvoidgetlnfo()

(

System.out.println(name);

packagemypackage.personmanage;

這條語(yǔ)句指定這個(gè)包中的文件存儲(chǔ)在目錄

pa%力/mypackage/personmanage下。

包層次的根目錄加曲是由環(huán)境變量CLASSPATH來(lái)確定的。

Java導(dǎo)入包

1、使用import語(yǔ)句

import應(yīng)名.標(biāo)識(shí)符;

import包名.*;

importjava.util.Date;

importjava,utiI.*;

Dateday=newDate();

2、直接使用包

java.util.Dateday=newjava.util.Date();

mypackage.personmanage.Personp=new

mypackage.personmanage.Person();

彘導(dǎo)入包舉例

packageyourpackage;

〔importmypackage.Person;_____

classStudentextendsPerson{

Stringschool;

publicvoidstudy(){

System.out.println("Studding");

}

publicstaticvoidmain(String[]args){導(dǎo)入包

Students=newStudent();

="John";

s.age=19;

s.school二"華北電力大學(xué)”;

s.getlnfo();

s.study();}}

已訪問(wèn)權(quán)限

權(quán)限修飾符允許的訪問(wèn)級(jí)別

權(quán)限修飾符同一類(lèi)同一包不同包的子類(lèi)所有類(lèi)

公有的(public)

保護(hù)的(protected),

默認(rèn)的(friendly)/

私有的(private)

■逑設(shè)置類(lèi)的訪問(wèn)權(quán)限

IJava

可以用public將類(lèi)設(shè)置為公有的。

>公有類(lèi)可以被其他類(lèi)所訪問(wèn)和引用。

?在一個(gè)源程序中,public類(lèi)只能有一個(gè)。

□可以不用權(quán)限修飾符。(包訪問(wèn)性)

?只能被同一個(gè)包中的類(lèi)訪問(wèn)和引用。

□不允許使用public以外的權(quán)限修飾符。

publicclassDatel〃公有的類(lèi)

classDatel〃非公有的類(lèi)

privateclassDate^^

.設(shè)置類(lèi)中成員的訪問(wèn)權(quán)限

□類(lèi)中的成員,包括publicclassDatel

<

intyear,month,day;

工成員變量

voidsetdate(intyzintm,intd)

(

工成員方法year=y;

month=m;

□聲明類(lèi)中的成員時(shí),day=d;

)

可以用權(quán)限修飾符來(lái)}

限制其他類(lèi)的對(duì)象訪privateintyear,month,day;

問(wèn)該成員。publicvoidsetdate()

Java設(shè)置類(lèi)中成員的訪問(wèn)權(quán)限

Lpublic

工protected保護(hù)的,說(shuō)明該類(lèi)成員能

4無(wú)(friendly為■默認(rèn)的,說(shuō)明該類(lèi)成員能

被同一類(lèi)中的其他成員、

工privat

私有的,該類(lèi)成員只能被

同一類(lèi)中的其他成員訪問(wèn)。

publicprivate

只有該類(lèi)可以訪

所有類(lèi)均可訪問(wèn)

問(wèn)

protected默認(rèn)

該類(lèi)及其子類(lèi)的

成員可以訪問(wèn),相同包中的類(lèi)可

同一個(gè)包中的類(lèi)以訪問(wèn)

也可訪問(wèn)

publicclassDate3

{privateintyear,month,day;

publicDate3(inty,intm,intd)

{year=y;

month=(((m>=1)&(m<=12))?m:1);

day=(((d>=1)&(d<=31))?d:1);

}

)

classDate3_ex

{publicstaticvoidmain(Stringargs[])

{Date3a=newDate3(2006,3,10);

System.out.println(a.year);

publicclassDate3

{privateintyear,month,day;〃成員變量,私有的

publicDate3(inty?intm,intd)

{year=y;month=(((m>=l)&(m<=12))?m:1);

day=(((d>=l)&(d<=31))?d:1);

)

publicbooleanisleapyear()

{return(year%400==0)|(year%100!=0)&(year%4==0);}

publicintgetyear(){returnyear;}

)

classDate3_ex

{publicstaticvoidmain(Stringargs[])

{Date3a=newDate3(2010.3.10);

System.out.println(a.getyear()卜”isaleapyear,n+a.isleapyear());

=實(shí)例成員與類(lèi)成員

Java

■屬于類(lèi)的變量和方法----static

Astatic用在變量或方法前,表明它們是屬于類(lèi)的,

稱(chēng)為類(lèi)方法(靜態(tài)方法)或類(lèi)變量(靜態(tài)變量)。

A若無(wú)static修飾,則是實(shí)例方法和實(shí)例變量。

漏實(shí)例成員與類(lèi)成員

A實(shí)例變量:每次創(chuàng)建對(duì)象時(shí),系統(tǒng)都創(chuàng)建實(shí)例變

量的拷貝。每一個(gè)對(duì)象都有一個(gè)實(shí)例變量。

A類(lèi)變量:運(yùn)行時(shí),只為該類(lèi)的第一個(gè)對(duì)象分配內(nèi)存

單元,其后創(chuàng)建的所有對(duì)象都共享這一類(lèi)變量。

&

一classUser

(

staticintcount=0;

類(lèi)voidlogin()

{count++;

System.out.println("你是第"+count+”位訪問(wèn)者)

}

)

classCount

(

應(yīng)publicstaticvoidmain(Stringargs[])

(

用Useru1=newUser();

u1.login();

Useru2=newUser();

u2.login();

}

}

嬴實(shí)例成員與類(lèi)成員

■實(shí)例方法

A即可以訪問(wèn)類(lèi)變量,也可以訪問(wèn)實(shí)例變量。

A實(shí)例方法只能通過(guò)對(duì)象來(lái)調(diào)用。

■類(lèi)方法

A只能使用其內(nèi)部定義的局部變量或類(lèi)變量。

A即可以通過(guò)對(duì)象來(lái)調(diào)用,也可以通過(guò)類(lèi)名來(lái)調(diào)用。

?目的:使方法獨(dú)立于類(lèi)的實(shí)例,使用類(lèi)去訪問(wèn)。

口實(shí)例變量允許超前引用類(lèi)變量

口實(shí)例變量不能超前引用實(shí)例變量,靜

態(tài)變量不能超前引用靜態(tài)變量

口實(shí)例方法中允許超前引用實(shí)例變量和

類(lèi)變量

口類(lèi)方法中只允許訪問(wèn)類(lèi)變量,但允許

超前引用

例:實(shí)例成員與類(lèi)成員

publicclassDate4

{privateintyear,mon^h;classDate4_ex

staticintcount={publicstaticvoidmain(S*in^^rgs[])

publicDate4(inty,intm,intd){Date4a=newDate4(2011,);

{year=y;a.print_count();a.print();

month=m;Date4b=newDate4(2011,5,1);

day=d;b.print_count();b.print();

count++;a.finalize();Date4.print_count();

publicstaticvoidprint_count())

{System.out.print("count*'+count+,,,,);}

publicvoidprint()

{System.out.println(ndateisn+year+,-,+month+,-,+day);}

publicvoidfinalizeQ{count—;count=ldateis2011-3-1

count=2dateis2011-5-1

count=l

彘類(lèi)方法的應(yīng)用

publicclasslsPrime{

publicstaticbooleanprime(intx)

(

for(intk=2;k<=Math.sqrt(x);k++)

{

if(x%k==0)

returnfalse;

}

returntrue;

})

ClassTestlsPrime{

publicstaticvoidmain(Stringargs[])

{

for(intm=10;m<=100;m++)

{

if(IsPrime.prime(m))

System.out.println(m+“是素?cái)?shù)。

}

)

}

三類(lèi)變量——靜態(tài)初始化程序

Java

口通過(guò)執(zhí)行一段程序來(lái)對(duì)類(lèi)變量進(jìn)行初始化。

口格式:

static{

)

彘實(shí)例成員與類(lèi)成員

實(shí)例變量與類(lèi)變量

privateintyear,month,day;〃實(shí)例變量,私有的

staticintcount=0;〃類(lèi)變量

實(shí)例方法與類(lèi)方法

publicstaticvoidprint_count()〃類(lèi)方法,只能訪問(wèn)類(lèi)變量

publicvoidprint()〃實(shí)例方法

a

Java

classStaticError

{,

Stringmystring="hello”;

publicstaticvoidmain(Stringargs[])

(

System.out.println(mystring);

編譯時(shí)錯(cuò)誤信息:non-staticvariablemystringcannotbe

referencedfromastaticcontextSystem.out.println(mystring);95o

為什么不正確:只有實(shí)例方法可以訪問(wèn)實(shí)例變量。

Java解決的辦法

1.[尋變量改成類(lèi)變量

classStaticError

<

staticStringmystring=uhelIo59;

publicstaticvoidmain(Stringargs[])

<

System.out.println(mystring);

}

}

應(yīng)

lava

2.先創(chuàng)建一個(gè)類(lèi)的實(shí)例

classNoStaticError

<

Stringmystring="hello”;

publicstaticvoidmain(Stringargs[])

<

NoStaticErrornoError;

noError=newNoStaticErrorQ;

System.out.println(noError.mystring);

}

}

彘名法承(inheritance)

口類(lèi)繼承是指一個(gè)類(lèi)可以繼承其他類(lèi)的非

私有成員,實(shí)現(xiàn)代碼復(fù)用。

口被繼承的類(lèi)稱(chēng)為父類(lèi),繼承父類(lèi)后產(chǎn)生

的類(lèi)稱(chēng)為子類(lèi)。

彘繼承的優(yōu)點(diǎn)

java

嬴Java中繼承的特點(diǎn)

object類(lèi)

Java

口Java中的類(lèi)都是Object的子類(lèi)。

口Object類(lèi)定義了所有對(duì)象都必須具有的基本狀態(tài)

和行為,例如,等待條件變量、轉(zhuǎn)化為字符串、

通知其他對(duì)象條件變量已改變等。

□Java中的每個(gè)類(lèi)都從Object類(lèi)繼承了變量和方

法,因而Java的所有對(duì)象都具有Object對(duì)象的

基本狀態(tài)和行為。

object類(lèi)

Java

□publicfinalClassgetClass()

獲取當(dāng)前對(duì)象所屬的類(lèi)信息,返回Class對(duì)象。

□publicStringtoString()

返回當(dāng)前對(duì)象本身的有關(guān)信息,按字符串對(duì)象返回。

□publicbooleanequals(Objectobj)

比較兩個(gè)對(duì)象是否是同一對(duì)象,是則返回true。

□protectedObjectclone()

生成當(dāng)前對(duì)象的一個(gè)拷貝,并返回這個(gè)復(fù)制對(duì)象。

□protectedvoidfinalize()throwsThrowable

定義回收當(dāng)前對(duì)象時(shí)所需完成的資源釋放工作。

Java

■何時(shí)選擇繼承?

一個(gè)很好的經(jīng)驗(yàn):“B是一個(gè)A嗎?”

如果是,則讓B做A的子類(lèi)。

常犯的錯(cuò)誤A有一個(gè)B嗎?例如讓汽

車(chē)輪子成為汽車(chē)的子類(lèi)是錯(cuò)誤的

嬴繼承的實(shí)現(xiàn)

classSubClassextendsSuperClass

□如缺省extends子句,則該類(lèi)為java.Iang.Object的子類(lèi)。

□可以繼承訪問(wèn)權(quán)限為public、protected>frendly的成員

變量和方法;

□不能繼承訪問(wèn)權(quán)限為private的成員變量和方法。

□構(gòu)造方法不能繼承。

Java例:子類(lèi)繼承超類(lèi)的成員變量

publicclassPersonclassStudent

{Stringname,sex;

Stringname,sex;intage;

intage;

Stringdept;

)

classStudentextendsPerson

Stringdept;

<

publicclassPerson

.

{protectedStringname;protectedintage;

子?

Person(Stringnl,intal){name=nl;age=al;}

n

類(lèi)n

publicvoidprint(){System.out.println(name+

+age);}

繼5

承)

超classStudentextendsPerson

類(lèi){protectedStringdept;

的Student(Stringnl,intal,Stringdl)

成{name=nl;age=al;dept=dl;}

員publicstaticvoidmain(Stringargs[])

方{Personpl=newPerson,李廣

法pl.print();

S

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論