ExtendClass 1
ExtendClass 1
Extended Class
Method Override
Class Type Conversion
Class Design
Extend Class
superclass
superclass
Base (base
(baseclass)
BaseClass
Class class)
Additional
Additional
Information
Information
subclass
subclass
(derived
(derivedclass)
class)
Extend
ExtendClass
Class
class
classSuperClass
SuperClass{{
int
inta;a;
void
voidmethodA
methodA{{
////......
}}
}}
class
classSubClass
SubClassextends
extendsSuperClass
SuperClass{{
int
intb;b;
void
voidmethodB
methodB{{
////......
}}
}}
Extend Class
q Single Inheritance
q Object Class
2 Super class of all classes
Object IfIfwe
wedon’t
don’treference
referencesuper
superclass
classexplicitly,
explicitly,
Object the default super class is Object
the default super class is Object
superclass
superclass
subclass
subclass
q super
2 Refer the hidden field in the super class
class
classSuperClass
SuperClass{{
int
intaa==1;1;
int
intbb==1;1;
}}
class
classSubClass
SubClassextends
extendsSuperClass
SuperClass{{
int
intaa==2;2;
int
intbb==super.a;
super.a
super.a;
////. .. .. .
}}
& [NameConflict.java]
Constructor of Extend Class
q Execution Order
2 1) Call the constructor of super class
2 2) Execute the part of initializing the field
2 3) Execute the body of constructor
& [SubConstructor.java]
q super()
2 Explicit calling the constructor of super class
& [SuperCallTest.java]
Method Overriding
q Method Overloading
2 Differ regarding number and type of parameters
q Method Overriding
2 Equal regarding number and type of parameter
2 Replaced with the method of subclass
4 The meaning of method on super class be changed in
subclass
& [OverridingAndOverloading.java]
Method Overriding
final
finalclass
classClassA
ClassA{{
void
voidmethodA()
methodA() /*/*......*/*/
void
voidmethodB()
methodB() /*/*......*/*/
}}
& [Addendum.java]
Abstract Class
q Declaration Method
abstract
abstractclass
classAbstractClass
AbstractClass{{
public
publicabstract
abstractvoid
voidmethodA();
methodA();
void
voidmethodB()
methodB(){{
////......
}}
}}
Abstract Class
Super
SuperClass
Class
Sub
SubClass
Class
Class Type Conversion
CLanguage
CLanguage
Java
Java Cplusplus
Cplusplus
void
voiddummy(CLanguage
dummy(CLanguageobj)
obj){{ void
voiddummy(Java
dummy(Java obj)
obj){{
////…… ////……
}} }}
////...... ////......
Java
Java j j==newnewJava();
Java(); Clanguage
Clanguage cc==new newCLanguage();
CLanguage();
dummy(j);
dummy(j); ////OK
OK dummy(c);
dummy(c); ////Error
Error
dummy(
dummy((Java)c
(Java)c);); //Exception
//Exception
Class Type Conversion
q polymorphism
2 The meaning of method will be changed according to the
object applied.
This
Thisrefers
referstotoan
anobject
objectofofJava
JavaClass,
Class,
CLanguage
CLanguage cc==new
newJava();
Java(); although
althoughtype
typeofofccisisCLanguage
CLanguagetype
type
c.print();
c.print();
& [Polymorphism.java]
&
Class Design