一、方法的重载和覆写
二、对象的多态性
1.向上转型
向上转型,系统会自动完成。
对象向上转型:父类 父类对象 = 子类实例 ;
class A{
public void fun1(){
System.out.println("A --> public void fun1()") ;
}
public void fun2(){
this.fun1() ;
}
} ;
class B extends A{
public void fun1(){
System.out.println("B --> public void fun1()") ;
}
public void fun3(){
System.out.println("B --> public void fun3()") ;
}
} ;
public class PolDemo02
{
public static void main(String args[]){
B b = new B() ;
A a = b ;
a.fun1() ;
a.fun2() ;
}
}
如果方法被子类覆写过,则肯定调用覆写过的方法。
向上转型的父类对象,因为操作的是父类对象,所以找不到子类自己定义的方法。
2.向下转型
向下转型时,必须指明要转型的子类类型
对象向下转型:子类 子类对象 = (子类)父类实例 ;
因为操作的对象是子类对象,所以叫做向下转型,向下转型需要采取强制手段。
class A{public void fun1(){
System.out.println("A --> public void fun1()") ;
}
public void fun2(){
this.fun1() ;
}
} ;
class B extends A{
public void fun1(){
System.out.println("B --> public void fun1()") ;
}
public void fun3(){
System.out.println("B --> public void fun3()") ;
}
} ;
public class PolDemo03
{
public static void main(String args[]){
B b = new B() ;
A a = b ;
B b1 = (B)a ;
b1.fun1() ;
b1.fun2() ;
b1.fun3() ;
}
}
b中存在三个方法。
不存在关系的两个类转换,会发生类转型异常,必须先向上转型,才能向下转型。
三、对象多态性的应用