Android进阶-Java向上转型

很多人在初次接触设计模式的时候,最大的疑惑莫过于碰到这样的句子:(父类C和子类C1)

 // 父类引用指向子类对象:父类名 对象名=new 子类名();
 C c =  new  C1();
// 相当于
C c = new C ();
C1 c1 = new C1();
c = c1;

这种用法叫做“父类引用指向子类对象”,或者叫“父类指针指向子类对象”,指的是定义一个父类的引用,而它实际指向的是子类创建的对象。功能上相当于子类的“向上转型”。

向上转型时,父类只能调用父类方法或者子类覆写后的方法,而子类中的单独方法则是无法调用的.

class  C {
    public  int  funcA( int  a,  int  b){
        return  a+b;
    }
    public  int  funcB( int  a,  int  b){
        return  a+b;
    }
}
class  C1  extends  C{
 	@Override
    public  int  funcA( int  a,  int  b) {
        return  a-b;
    }
    
    public  int  funcC( int  a,  int  b) {
        return  a-b;
    }
}
class  Client{
    public  static  void  main(String[] args) {
        C c =  new  C1();
        System.out.println( "2+1="  + c.funcA( 2 ,  1 )); //2+1=1 调用子类重写的funcA
        System.out.println( "2+1="  + c.funcB( 2 ,  1 )); //2+1=3 子类未重写funcB(),调用父类的funcB();
//        System.out.println( "2+1="  + c.funcC( 2 ,  1 ));//报错 子类的单独方法无法调用
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值