版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新課標(biāo)小學(xué)語(yǔ)文“學(xué)習(xí)任務(wù)群”的教學(xué)思路
- 高中物理第十一章電路及其應(yīng)用課時(shí)13串聯(lián)電路和并聯(lián)電路課件新人教版必修第三冊(cè)
- Windows Server網(wǎng)絡(luò)管理項(xiàng)目教程(Windows Server 2022)(微課版)5.5 拓展案例1:Web站點(diǎn)安全加固
- 全省小學(xué)數(shù)學(xué)教師賽課一等獎(jiǎng)數(shù)學(xué)一年級(jí)上冊(cè)(人教2024年新編)《10的加、減法》課件
- 2014年腔體耦合器投資分析研究咨詢(xún)報(bào)告
- 2024至2030年中國(guó)整體式豆奶機(jī)行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024至2030年中國(guó)成套污水處理機(jī)械設(shè)備數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國(guó)家用縫紉機(jī)控制器拉桿行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 高中物理第五章交變電流5電能的輸送課件新人教版選修3-
- 2024至2030年中國(guó)中頻整體退火設(shè)備行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 遼寧省沈陽(yáng)市2024-2025學(xué)年七年級(jí)上學(xué)期期中模擬英語(yǔ)試題
- 2023年中國(guó)鐵路國(guó)際有限公司招聘考試試題及答案
- 24年注安-法規(guī)-考前
- 天津市歷年中考語(yǔ)文現(xiàn)代文之說(shuō)明文閱讀8篇(含答案)(2003-2023)
- 陪診免責(zé)協(xié)議書(shū)范本電子版
- 超星爾雅學(xué)習(xí)通《形勢(shì)與政策2024年秋》章節(jié)測(cè)試答案
- 國(guó)資國(guó)企企業(yè)學(xué)習(xí)二十屆三中全會(huì)精神專(zhuān)題培訓(xùn)
- 履職工作計(jì)劃
- 火星營(yíng)地登陸計(jì)劃-趣味地產(chǎn)周年慶典市集活動(dòng)策劃方案
- T-CPHA 33-2024 通.用碼頭和多用途碼頭綠色港口等級(jí)評(píng)價(jià)指南
- 2024年上海市中考地理試卷(含答案解析)
評(píng)論
0/150
提交評(píng)論