配色: 字号:
Java编程思想
2012-08-06 | 阅:  转:  |  分享 
  
5、对象的构造方法构造方法(Constructor)是一种特殊的方法。Java中的每个类都有构造方法,用来初始化该类的一个新的
对象。构造方法具有和类名相同的名称,而且不返回任何数据类型。系统在产生对象时会自动执行。构造方法应包含的内容:定义
一些初值或内存配置工作;一个类可以有多个构造方法(重载),根据参数的不同决定执行哪一个;如果程序中没有定义构造方法,则创建
实例时使用的是缺省构造方法,它是一个无内容的空方法。5、对象的构造方法publicclassEmployee{
privateStringname;privateintsalary;publicEmpl
oyee(Stringn,ints){ name=n; salary=s;}
publicEmployee(Stringn){ this(n,0);}publicE
mployee(){ this(“Unknown”);}}thisthis指向自己的引用,它的
一个主要作用是要将自己这个对象当作参数,传送给别的对象中的方法。classThisClass{publicsta
ticvoidmain(){Bankbank=newBank();ban
k.someMethod(this);}}classCircle{intr;Circl
e(intr){this.r=r;}publicarea(){
returnrr3.14;}}5、对象的构造方法supersuper指这个对象的父类。sup
er可以用来引用父类中的(被覆盖的)方法、(被隐藏的)变量及构造方法。publicclassappleextendsf
ruits{publicapple(intprice){super(price);
super.var=value;super.method(paraList);}}
以上程序表示使用父类的构造方法生成实例,super必须是子类构造方法的第一条语句。5、对象的构造方法Finalize方法在
对对象进行垃圾收集前,Java运行时系统会自动调用对象的finalize()方法来释放系统资源。该方法必须按如下方式声明:pr
otectedvoidfinalize()throwsthrowable{……}finalize()方法是在java.
lang.Object中实现的,在用户自定义的类中,它可以被覆盖,但一般在最后要调用父类的finalize()方法来清除对象所使用
的所有资源。protectedvoidfinalize()throwsthrowable{……//释放本
类中使用的资源super.finalize();}5、对象的构造方法练习1、上机练习Java面向对象的各种特性;
2、结合Tutorial及其实例来学习Java;3、认真看教材,结合问题课堂讨论;4、尝试使用Java类包中提供的各种类下
一节课主要内容1、数组2、向量3、字符处理4、算法与数据结构下课!方法覆盖时应遵循的原则(1)覆盖后的方法
不能比被覆盖的方法有更严格的访问权限。(2)覆盖后的方法不能比被覆盖的方法产生更多的异常。2、Java中的类、方法和变
量 ——覆盖类方法的重载方法重载即指多个方法可以享有相同的名字。但是这些方法的参数必须不同,或者是参数个数不同
,或者是参数类型不同。例如,要打印不同类型的数据,int,float,String,不需要定义不同名的方法:
printInt(int);printFloat(float);printString(String)。利用
方法重载,只需要定义一个方法名:println(),接收不同的参数:println(int);printl
n(float);println(String);StringBuffervs.ResultSet2、Java中的
类、方法和变量 ——重载多态性类方法的重载是一种多态性。除此之外,多态性还可以是指在程序中需要使用父类对象的地方,都可以
用子类对象来代替。 例如:publicclassEmployeeextendsObject{……}publiccl
assManagerextendsEmployee{……}则:Employeee=newManager();
//合法语句通过instanceof可以判断父类引用所引用的对象实例的实际类型。2、Java中的类、方法和变量
——多态性可以用方法来实现对成员变量的隐藏:设置变量方法:setVariable()获取变量方法:getVariable
()classSample{ protectedintx; …… voidsetX(intvar) {
x=var; } intgetX() { returnx; } ……}2、Ja
va中的类、方法和变量 ——成员变量的隐藏在Java语言中,提供了操作符instanceof用来判断对象是否属于某个类的实例
。publicvoidmethod(Employeee){if(einstance
ofManager){…//dosomethingasaMa
nager}elseif(einstanceofContractor
){ …//dosomethingasaContractor
}else{ …//dosomethingelse
}}2、Java中的类、方法和变量 ——对象状态的确定EmployeeManagerContractor2、Ja
va中的类、方法和变量 ——内嵌类(innerclass)在一个类的内部声明的类,称为内嵌类。publicclass
Stack{privateVectoritems;...//codeforStack''smetho
dsandconstructorsnotshown...publicEnumerationenumerat
or(){returnnewStackEnum();}classStackEnum
implementsEnumeration{intcurrentItem=items.size()-
1;publicbooleanhasMoreElements(){return
(currentItem>=0);}publicObjectnextElement(
){if(!hasMoreElements())thrownewNoSuchElementEx
ception();elsereturnitems.elementAt(currentItem--)
;}}}内嵌类只能在包含它的类中使用,同时它可以看作是该包含类的一段特殊代码,可以直接
使用该包含类的变量和方法。内嵌类编译后也会形成一个单独的class,但它附属于其包含类。Stack$StackEnum
.class3、Java名字空间及访问规则每个类都拥有自己的名字空间,即指类及其方法和变量可以在一定的范围内知道彼此的存在,可
以相互使用。对类而言:abstract类:不能直接产生属于这个类的对象;final类:不能被其他任何类所继承(安全的考虑);
public类:不但可以被同一程序包(package)中的其它类使用,别的程序包中的类也可以使用;friendly类(缺省,包访
问类):只能被本程序包中的其它类使用,不能被别的程序包中的类使用。当一个类可以被访问时,对类内的成员变量和成员方法而言,其应用范
围可以通过施以一定的访问权限来限定。 同一个类中同一个包中不同包中的子类不同包中的非子类(任意类) priv
ate ★ default ★ ★ protected ★ ★ ★ public ★ ★ ★ ★ 3、J
ava名字空间及访问规则3、Java名字空间及访问规则public:任何其它类、对象只要可以看到这个类的话,那么它就可以存
取变量的数据,或使用方法。protected:同一类,同一包可以使用。不同包的类要使用,必须是该类的子类。private:
不允许任何其他类存取和调用。friendly(default,前边没有修饰字的情况):在同一程序包中出现的类才可以直接使用它的
数据和方法.当子类中的变量名与父类的相同,父类的变量被遮盖。classA classBextendsA{
{staticintdata_a=3; staticintdata_a=5;} }clas
sCextendsB{voidprint_out(){System.out.pr
intln(“data_a=”+data_a);System.out.println(“A.data_a=
”+A.data_a);System.out.println(“B.data_a=”+B.data_a);
}}classdemo{publicstaticvoidmain(Stringargs[])
{Cc=newC();c.print_out();}}da
ta_a=5A.data_a=3B.data_a=53、Java名字空间及访问规则3、Java名字空间及访问规则 ——
final:到此为止final在类之前表示该类是最终类,不能再被继承。final在方法之前表示该方法是最终方法,该方法不
能被任何派生的子类覆盖。final在变量之前表示变量的值在初始化之后就不能再改变;相当于定义了一个常量。static在变量
或方法之前,表明它们是属于类的,称为类方法(静态方法)或类变量(静态变量)。若无static修饰,则是实例方法和实例变量。类变量
在各实例间共享classtest{chardata;staticintshare_dat
a;}classDemo{testa,b,c,d;}objectachardataobjectc
chardataObjectbchardatastaticintshare_dataobjectdch
ardata3、Java名字空间及访问规则 ——static:类变量和类方法类变量的生存期不依赖于对象,相当于C语言中
全局变量的作用。其它类可以不用通过创建该类的实例,直接通过类名访问它们。publicclassStaticVar{ pu
blicstaticintnumber=5;}publicclassOtherClass{ publicv
oidmethod() { intx=StaticVar.number; }}3、Java名字空间
及访问规则 ——static:类变量和类方法static{number=5;}类方法则相当于C语言中的全
局函数,其他的类也可以直接通过类名来访问类方法。(Java程序的入口方法main()就是一个类方法)publicclassG
eneralFunction{ publicstaticintaddUp(intx,inty) { retur
nx+y; }}publicclassUseGeneral{ publicvoidmethod() {
inta=9; intb=10; intc=GeneralFunction.addUp(a,b); }
}3、Java名字空间及访问规则 ——static:类变量和类方法同一个类的实例方法可以访问该类的类变量和类方法;
而类方法只能访问该类的类变量和类方法,不能直接访问实例的变量和方法。3、Java名字空间及访问规则 ——static:类变
量和类方法不正确的引用classStaticError{Stringmystring=“hello”;
publicstaticvoidmain(Stringargs[]){System.ou
t.println(mystring);}}编译时错误信息:nonstaticvariablemystring
cannotbereferencedfromastaticcontext“System.out.println(m
ystring);”。为什么不正确:只有对象的方法可以访问对象的变量。3、Java名字空间及访问规则 ——static:
类变量和类方法解决的办法1.将变量改成类变量classNoStaticError{staticString
mystring=“hello”;publicstaticvoidmain(Stringargs[])
{System.out.println(mystring);}}3、Java名字空间及访问规则
——static:类变量和类方法解决的办法2.先创建一个类的实例classNoStaticError{
Stringmystring=“hello”;publicstaticvoidmain(Stringarg
s[]){NoStaticErrornoError;noError=
newNoStaticError();System.out.println(noError.myst
ring);}}3、Java名字空间及访问规则 ——static:类变量和类方法4、Java中的抽象类、接
口和程序包 ——抽象类与抽象方法抽象类:用abstract关键字来修饰一个类时,该类叫做抽象类;抽象类必须被继承。抽象
类不能被直接实例化。它只能作为其它类的超类,这一点与最终类(final类)正好相反。抽象方法:用abstract来修饰一个方法时
,该方法叫做抽象方法。抽象方法必须被重写抽象方法只有声明,不能有实现。定义了抽象方法的类必须是抽象类。abstractr
eturnTypeabstractMethod([paramlist]);两个类Circle和Rectangle,完成相
关参数的计算classRectangle{publicfloatwidth,height;
Rectangle(floatw,floath){width=w;//这里不需"
this"height=h;}publicfloatarea()
{returnwidthheight;}}classCircle{
publicfloatr;Circle(floatr){this.r=r;
//this指"这个对象的"}publicfloatarea(){
return3.14rr;}}4、Java中的抽象类、接口和程序包 ——抽象类与抽象方法假
设有若干个Circle,以及若干个Rectangle,希望计算它们的总面积,直截了当的做法是将它们分别放到两个数组中,用两个循环,
加上一个加法,这种做法是不漂亮的。如果还有其它形状:Triangle,Ellipses等,上述方法显得“累赘”。我们希望有一种统
一的表示,例如用一个数组shape[],接受所有的形状,然后用:for(i=0;iarea_total+=shape[i].area();}4、Java中的抽象类、接口和程序包 ——抽象类与抽
象方法abstractclassShape{abstractfloatarea();}classRec
tangleextendsShape{publicfloatwidth,height;Rec
tangle(floatw,floath){width=w;//这里不需"thi
s"height=h;}publicfloatarea()
{returnwidthheight;}}classCircleextendsS
hape{publicfloatr;Circle(floatr){t
his.r=r;//this指"这个对象的"}publicfloatarea()
{return3.14rr;}}4、Java中的抽象类、接口和程序包 ——抽象
类与抽象方法接口(interface)就是方法定义和常量值的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含
常量和方法的定义,而没有方法的实现。通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。通过接口可以指明
多个类需要实现的方法。通过接口可以了解对象的交互界面,而不需了解对象所对应的类。4、Java中的抽象类、接口和程序包
——接口接口的定义:[public]interfaceinterfaceName[extendsSuperInterf
aceList]{ …… //常量定义和方法定义}接口(interface)作为特殊形式的抽象类,和类(class)在使用
上具有类似的约束。与类继承不同,一个接口可以继承多个父接口一个public接口只能定义在同名的.java文件中4、Java中
的抽象类、接口和程序包 ——接口用implements子句来表示一个类使用某个接口。在类体中可以使用接口中定义的常量
,而且必须实现接口中定义的所有方法。利用接口可实现多重继承,即一个类可以实现多个接口,在implements子句中用逗号分隔
。接口的作用和抽象类相似,只定义原型,不直接定义方法的内容。接口中的方法和变量必须是public的。4、Java中的抽象
类、接口和程序包 ——接口interfaceCollection{ intMAX_NUM=100; voida
dd(Objectobj); voiddelete(Objectobj); Objectfind(Object
obj); intcurrentCount();}classFIFOQueueimplementsCollect
ion{ voidadd(Objectobj) { …… } voiddelete(Objectob
j) { …… } Objectfind(Objectobj) { …… } intcurrent
Count() { …… }}4、Java中的抽象类、接口和程序包 ——接口<>Coll
ection<>ListArrayListLinkedListAbstractCollection
AbstractList4、Java中的抽象类、接口和程序包 ——接口java.util类包中的一些接口
由于Java编译器为每个类生成一个字节码文件,且文件名与类名相同,因此同名的类有可能发生冲突。为了解决这一问题,Java提供包来
管理类名空间。程序包相当于其它语言中的库函数。4、Java中的抽象类、接口和程序包 ——程序包(类包)
打包Java中用package语句来将一个Java源文件中的类打成一个包。package语句作为Java源文件的第
一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。它的格式为:packagepkg1[.pkg2[.p
kg3…]];Java编译器把包对应于文件系统的目录管理,package语句中,用.来指明目录的层次。4、J
ava中的抽象类、接口和程序包 ——程序包(类包)packagemyclass.graphics;这条语句指定这个包中
的文件存储在目录path/myclass/graphics下。包层次的根目录path是由环境变量CLASSPATH来确定的。
packagemyclass.graphics;classSquare{…;}classCircle{…;}cl
assTriangle{…;}4、Java中的抽象类、接口和程序包 ——程序包(类包)Square.java编译
和生成包在前面Square.java中已定义了myclass.graphics,编译时可以采用如下方式:java
c[-ddestpath]Square.java则编译器会自动在destpath目录下建立子目录myclass
/graphics,并将生成的.class文件都放到destpath/myclass/graphics下。de
stpath应该是环境变量CLASSPATH中的一个。4、Java中的抽象类、接口和程序包 ——程序包(类包)
为了能使用Java中已提供的类,我们需要用import语句来引入所需要的类。importpackage1[.package2
…].(classname|);例如:importmyclass.graphics.;importjava
.io.;由环境变量CLASSPATH确定4、Java中的抽象类、接口和程序包 ——程序包(类包)myclassp
athSquaregraphics第三讲Java与面向对象技术1、面向对象的概念2、Java中的类、方法和变量3、
Java名字空间及访问规则4、Java中的抽象类、接口和程序包5、对象的构造方法所谓面向对象的方法学,就是使我们
分析、设计和实现一个系统的方法尽可能地接近我们认识一个系统的方法。包括:面向对象的分析(OOA,Object-Oriente
dAnalysis)面向对象的设计(OOD,Object-OrientedDesign)面向对象的程序设计(OOP,
Object-OrientedProgram)面向对象技术主要围绕以下几个概念:对象(Object)、抽象数据类型
(ADT)、类(Class)、类型层次(子类)、继承性(Inherit)、多态性。1、面向对象的概念对象有两个层次的概念:
现实生活中对象指的是客观世界的实体;程序中对象就是一组变量和相关方法的集合,其中变量表明对象的状态,方法表明对象所具有的行为
。变量方法1、面向对象的概念 ——对象现实生活中的对象可以将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序
中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class)。ClassCar{intcolor_nu
mber;intdoor_number;intspeed;voidbrake()
{…}voidspeedUp(){…}voidslowDown(){…}}抽象数据类
型1、面向对象的概念 ——对象类是描述对象的“基本原型”,它定义一类对象所能拥有的数据和能完成的操作。在面向对象的程序设
计中,类是程序的基本单元。相似的对象可以归并到同一个类中去,就像传统语言中的变量与类型关系一样。程序中的对象是类的一个实例
,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成。1、面向对象的概念 ——类……Carcar1;Ca
rcar2;……CarcarN;1、面向对象的概念 ——类变量:指对象的所知道的状态。方法:指对象的功
能单元。消息软件对象通过相互间传递消息来相互作用和通信,一个消息由三部分组成:1.接受消息的对象2.接收对象要采取
的方法3.方法需要的参数对象B对象A消息1、面向对象的概念 ——类一个例子在程序中所操作的对象是
类的一个实例。创建一个对象:Helloobj=newHello();调用方法:obj.showString();
调用对象的方法相当于给对象发送消息,收到消息的对象通过改变自身的状态或者向其它对象发送消息来响应消息。classHell
o{}privateStrings;publicvoidshowString(){S
ystem.out.println(s);}publicvoidchangeString(Stringstr){
s=str;}变量方法showString()方法changeString()1、面向对象的概念 ——类
为什么要使用类?采用简单数据类型表示现实世界中概念的局存在很大的限性。例如:采用int型数据表示一个日期概念,需要使用3个变量:
intday,month,year;如果要表示2个人的生日,就要使用6个变量并且在使用中必须时刻注意三者的联系和约束
关系同时在使用日期概念时要同时对三个变量进行访问 使用类可以把现实问题中的对象映射为程序中的一个整体——类。1、面向对象的
概念 ——类类中不但有变量,还有与之相关的操作所定义的方法。将变量和方法封装在一个类中,可以对成员变量进行隐藏,外部对类成员
的访问都通过方法进行,能够保护类成员不被非法修改。classBirthDate{publicintday,
month,year;publicinttomorrow(){……
}}BirthDatemybirth,yourbirth;BirthDatedate;已知当前日期对象,求第2
天的日期对象:date.day=date.day+1;如果date.day已经为31,操作结果是非法状态。可以定义一个成员方法
tomorrow(),求第2天的日期对象。外部要获得当前日期的后一天时,只要调用: date.tomorrow();1、面向对象
的概念 ——类封装把对象的所有组成部分组合在一起私有数据方法方法数据对象A对象B公有数据
封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。1、面向对象的概念
——封装子类是作为另一个类的扩充或修正而定义的一个类。bicycle(superclass,父类)Mountainb
ikesRacingbikesTandembikessubclass1、面向对象的概念 ——子类继承是子类利用
父类中定义的方法和变量,就像它们属于子类本身一样。classCar{intcolor_number;
intdoor_number;intspeed;publicvoidpush_break()
{…}publicvoidadd_oil(){…}}clas
sTrash_CarextendsCar{doubleamount;publicvoidf
ill_trash(){…}}1、面向对象的概念 ——继承方法的覆盖覆盖使得在
子类中可以重新定义父类中已有的方法,从而体现出子类自己的行为。classCar{intcolor_number;
intdoor_number;intspeed;publicvoidpush_break
(){speed=0;}publicvoidadd_oil(){
…}}classTrash_CarextendsCar{doubleamount;
publicvoidfill_trash(){…}publicvoidpush_break()
{speed=speed–10;}}1、面向对象的概念 ——方法的覆盖
重载指得是在同一个类中至少有两个方法用同一个名字,但有不同的参数。类voidshow(intint_num)void
show(doubledouble_num)voidshow(intint_num,floatfloat_num
)1231.23123,1.231、面向对象的概念 ——方法的重载(多态性)例如对于StringBuffer类,它有
方法publicStringBufferappend(inti);publicStringBufferappen
d(doubled);publicStringBufferappend(Strings);publicStrin
gBufferappend(char[]?str, int?offset,
int?len);类、方法、变量定义的语法规范对象的创建和使用继承、覆盖、重载、多态等概念内嵌类(innercl
ass)2、Java中的类、方法和变量2、Java中的类、方法和变量 ——类定义的语法规范类的严格定义及修饰字类的修
饰字:[public][abstract|final]缺省方式为
friendly[类的修饰字]class类名称[extends父类名称][implements接口名称列表]{
变量定义及初始化;方法定义及方法体;}类体,其中定义了该类中所有的变量和该类所支持的方法
,称为成员变量和成员方法。[变量修饰字]变量数据类型变量名1,变量名2[=变量初值]…;变量的定义及修饰字[publi
c|protected|private][static][final][transient][volatile
]成员变量的类型可以是Java中任意的数据类型,包括简单类型,类,接口,数组。在一个类中的成员变量应该是唯一的。2、Java中
的类、方法和变量 ——变量定义的语法规范[方法修饰字]返回类型方法名称(参数1,参数2,…)[throwsexce
ptionList]{…(statements;)//方法体:方法的内容}方法的定义及修饰字[publ
ic|protected|private][static][final|abstract][native][
synchronized]返回类型可以是任意的Java数据类型,当一个方法不需要返回值时,返回类型为void。
参数的类型可以是简单数据类型,也可以是引用数据类型(数组、类或接口),参数传递方式是值传递。方法体是对方法的
实现。它包括局部变量的声明以及所有合法的Java指令。局部变量的作用域只在该方法内部。2、Java中的类、方法和变量 ——变
量定义的语法规范classA{staticvoidchange(Strings,StringBuffersb
){s=“aaaa”;//此语句不起作用sb.setLength(0);sb.appen
d(“aaaa”);}publicstaticvoidmain(Stringargs[]){Str
ings=“bbbb”;StringBuffersb=newStringBuffer(“bbbb”);
change(s,sb);System.out.println(s);System.out.print
ln(sb);}}输出结果:bbbbaaaa2、Java中的类、方法和变量 ——参数的传递方式是值传递一个简
单的类classCar{intcar_number;voidset_number(intcar
_num){car_number=car_num;}voidshow_
number(){System.out.println(“MycarNo.is:”+
car_number);}}classCarDemo{publicstaticvoidmai
n(Stringargs[]){CarDemocar=newCar();
DemoCar.set_number(3838);DemoCar.show_number();
}}MycarNo.is:38382、Java中的类、方法和变量 ——一个简单的类(1)对象的生成
通过new操作符生成一个对象;例如: CardemoCar; demoCar=newCar();(2)对象的
构造过程为对象开辟空间,并对对象的成员变量进行缺省的初始化;对成员变量进行指定的初始化;调用构造方法。2、Java中
的类、方法和变量 ——对象(3)对象的使用对象的使用是通过一个引用类型的变量来实现,包括引用对象的成员变量和方
法,通过运算符·可以实现对变量的访问和方法的调用。例如: BirthDatedate; intday; day=
date.day; //引用date的成员变量day date.tomorrow(); //调用date的方法tomorrow(
)2、Java中的类、方法和变量 ——对象类的继承classCar{intcar_number;
voidset_number(intcar_num){car_number=car
_num;}voidshow_number(){System.out
.println(“MycarNo.is:”+car_number);}}2、Java中的类、方法和变量
——继承classTrashCarextendsCar{intcapacity;voi
dset_capacity(inttrash_car_capacity){capacity
=trash_car_capacity;}voidshow_capacity(){
System.out.println(“Mycapacityis:”+capacity);}}
2、Java中的类、方法和变量 ——继承Car是父类,TrashCar是子类。TrashCar中继承了Car中的两个方法,
同时又增加了两个新方法。classCarDemo{publicstaticvoidmain(String
args[]){TrashCardemoTrashCar=newTrashCar();
demoTrashCar.set_number(4949);demoTrashCar.sho
w_number();demoTrashCar.set_capacity(20);dem
oTrashCar.show_capacity();}}继承的方法新增加的方法2、Java中的类、方法和变量 ——继承继承性是面向对象程序设计语言的另一基本特征,通过继承可以实现代码的复用。继承而得到的类为子类,被继承的类为父类,父类包括所有直接或间接被继承的类。Java中不支持多重继承。通过在类的声明中加入extends子句来创建一个类的子类:classSubClassextendsSuperClass{……}如果缺省extends子句,则该类为java.lang.Object的子类。子类可以继承父类中访问权限设定为public、protected、default的成员变量和方法,但是不能继承访问权限为private的成员变量和方法。2、Java中的类、方法和变量 ——继承何时选择继承?一个很好的经验:“B是一个A吗?”如果是则让B做A的子类.常犯的错误A有一个B吗?例如让汽车轮子成为汽车的子类是错误的2、Java中的类、方法和变量 ——继承ShapePointCircleCylinder在更多的时候,组成(聚集)关系比继承更能使系统具有高度的灵活性,可维护行,并且提高系统的可重用性。ShapePointCircleCylinder2、Java中的类、方法和变量 ——继承类方法的覆盖方法覆盖即指在子类中重新定义父类中已有的方法。classCar{intcolor_number;intdoor_number;intspeed;publicvoidpush_break(){speed=0;}publicvoidadd_oil(){…}}classTrash_CarextendsCar{doubleamount;publicvoidfill_trash(){…}publicvoidpush_break(){speed=speed–10;}}2、Java中的类、方法和变量 ——覆盖覆盖方法的调用对于重写的方法,Java运行时系统根据调用该方法的实例的类型来决定选择哪个方法调用。publicclassDemoCar{publicstaticvoidmain(Stringargs[]){ CaraCar=newTrash_Car(); aCar.push_break();}}在这里,类Trash_Car中的push_break()方法将被调用。2、Java中的类、方法和变量 ——覆盖
献花(0)
+1
(本文系小云蔡首藏)