JAVA新手入门(1)
3600 点击·0 回帖
![]() | ![]() | |
![]() | 2.对象的上转型对象(具体用途在抽象类中体现出来) 我们经常说"老虎是哺乳动物","狗是哺乳动物"等.若哺乳类是老虎类的父类,这样说当然正确,但当说老虎是哺乳动物时,老虎讲失掉老虎独有的属性和功能.下面就介绍对象的上转型对象. 假设B类是A类的子类或间接子类,当用子类B创建一个对象,并把这个对象的放到A类的对象中时,如 A a; a=new B(); 或 A a; B b=new B(); a=b; 那么,称这个A类对象a是子类对象b的上转型对象(好比说:"老虎是哺乳动物").对象的上转型型对象的实体是子类负责创建的,但上转型对象会失去原来的一些功能. 上转型对象具有如下特点: 1)上转型对象不能操作子类新增的成员变量(失掉了这部分属性),不能使用子类新增的方法(失掉了一些功能). 2)上转型对象可以操作子类继承或隐藏的成员变量,也可以使用子类继承的或重写的方法. 3)上转型对象操作子类继承或重写的方法时,就时通知对应的子类对象去调用这些方法.因此,如果子类重写了父类的某个方法后,对象的上转型对象调用这个方法时,一定是调用了这个重写的方法. 4)可以讲对象的上转型对象再强制转换到一个子类的对象,这时,该子类对象又具备了子类的所有属性和功能. 注意:a.不要将父类创建的对象和子类对象的上转型对象混淆;b.不可以将父类创建的对象的赋值给子类声明的对象(不能说:"哺乳动物是老虎") 体会下面的例子来掌握上转型对象的概念 复制代码 class 类人猿 { private int n=100; void crySpeak(String s) { System.out.println(s); } } class People extends 类人猿 { void computer(int a,int b) { int c=a*b; System.out.println(c); } void crySpeak(String s) { System.out.println("**"+s+"**"); } } class Example { public static void main(String args[]) { 类人猿 monkey=new People(); //把子类创建的对象赋给父类创建的对象monkey,则monkey现在就是一个上转型对象 monkey.crySpeak("I love this game");//monkey可以调用子类中继承或重写的方法 People people=(People)monkey; //把上转型对象强制转换为子类的对象,赋值子类创建的对象 people.computer(10,10); } } | |
![]() | ![]() |