4.9 对象的上转型对象

 
假设B类是A类的子类或间接子类,当子类B创建一个对象,并把这个对象的引用放到A类的对象中时,如:
A a; 
a=new B();
A a;
B b=new B();
a=b;
那么,称这个A类对象a子类对象b的上转型对象
对象的上转型对象的实体是由子类负责创建的,但上转型对象会失去原子类对象的一些属性和功能。有如下特点:

1)上转型对象不能操作子类新增的成员变量(失掉这部分属性),不能使用子类新增的方法(失掉这部分功能)。
2)上转型对象可以操作继承或隐藏的成员变量,也可以使用子类继承或重写的方法
3)如果子类重写了父类的某个方法,上转型对象调用的方法是重写的方法
4)可以将上转型对象再强制转换到一个子类对象,这时,该子类对象又具备了子类的所有属性和功能
    注:不要将父类创建的对象子类对象的上转型对象混淆
例:
class Monkey{       
    private int n=100;
    void speak(String s){        
        System.out.println(s);
    }
}
class People extends Monkey{        
    void speak(String s){        
        System.out.println("**"+s+"**");
    }
    void computer(int a,int b){        
        int c=a+b;
        System.out.println(c);
    }
}
public class ShangZhuanXingExample{       
    public static void main(String args[]){          
        Monkey monkey = new People();//monkey是People对象的上转型对象
        monkey.speak("I love this game");
        People people=(People)monkey;//将上转型对象再强制转换为子类对象
        people.computer(1,1);
    }
}
/*输出
**I love this game**  
2
*/

转载于:https://my.oschina.net/jerrypan/blog/128439

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值