Java5-3 对象的上转型对象

Java5-3 对象的上转型对象

1.上转型对象:

如果B类是A类的子类或间接子类,当用B类创建对象b并将这个对象b的引用赋给A类对象a时,则称A类对象a是子类B对象b的上转型对象。

如:

A a;
a = new B();
OR
A a;
B b = new B();
a = b;

2.上转型对象性质:

对象b的上转型a的实体是有子类B创建的,但是上转型对象会失去子类B的一些属性和功能。上转型对象具有以下特点:

  • 上转型对象不能操作子类新增加的成员变量,不能使用子类新增的方法。即为较子类B失去一些属性和功能,这些属性和功能是新增的。
  • 上转型对象可以操作子类继承或隐藏的成员变量,也可以使用子类继承的或重写的方法。即为上转型对象可以操纵父类原有的属性和功能,无论这些方法是否被重写。
  • 上转型对象调用方法时,就是调用子类继承和重写过的方法。而不会是新增的方法,也不是父类原有的方法。
  • 可以将对象的上转型对象再强制转换到一个子类对象,强制转换过的对象具有子类所有属性和功能。

3.上转型对象举例:

class A{
    double n;
    int m;
    void f(){
        System.out.printf("子类继承方法f(),n=%f,m=%d\n",n,m); 
    }
    void g(){
        System.out.printf("你好,n=%f,m=%d\n",n,m);  
    }  
}

class B extends A{
    int n=12;
    void g(){
       System.out.printf("子类重写方法g(),n=%d,m=%d\n",n,m); 

    }
    void cry(){
        System.out.printf("子类新增的方法,n=%d,m=%d\n",n,m); 
    }
}

public class Example5_8{
    public static void main(String args[ ]){
        A a;
        a=new B();             //a是子类对象的上转型对象
        a.n=0.618;             //操作子类隐藏的double类型成员n
        a.m=200;              //操作子类继承的成员m,等价于b.m=200;
        a.f();                 //调用子类继承的方法,等价于b.f();
        a.g();                  //调用子类重写的方法,等价于b.g();
        B b=(B)a;             //上转型对象强制转换成子类对象
        b.n=555;                 //操作子类新增的int类型成员n
        b.cry();                // a.cry();  是非法的   //上转型对象失去了新增的变量和方法
    }
}

4.继承与多态
多态性:父类的某个方法被子类重写时,可以产生各自的功能行为

举例:

class 动物{
    void cry( ){
}
}
classextends 动物{
    void cry(){
    System.out.println("这是狗的叫声:汪汪汪");
}
}
classextends 动物{
    void cry(){
    System.out.println("这是猫的叫声:喵喵喵");
    }
    }
public class test{
public static void main(String args[ ]){
  动物  animal=new();
  animal.cry();
  animal=new();
  animal.cry();
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值