多态性

一、方法的重载和覆写

二、对象的多态性

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中存在三个方法。

        不存在关系的两个类转换,会发生类转型异常,必须先向上转型,才能向下转型。

三、对象多态性的应用

       


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值