(软件构造)java中的对象类型转换

1. 向上转型

首先看一个例子:

public class Quadrangle {
    public static void draw(Quadrangle q){
//        some sentences...
        System.out.println("draw");
    }
}

public class Parallelogram extends Quadrangle {
    public static void main(String args[]) {       //实例化平行四边形类对象引用
        Parallelogram p = new Parallelogram();     //调用父类方法
        draw(p);
    }
}
在上面的例子中,平行四边形继承了四边形类,四边形类中有一个draw()方法,它的参数是Quadrangle类型,而在四边形类的主方法调用却是Parallelogram类型。这里说明了一个问题,平行四边形也是四边形类的。所以这句话就等价于 Quadrangle obj = new Parallelogram(); 就是把子类型赋值给父类型变量,这种技术就叫做向上转型,父类定义的方法完成各个子类的功能,这样就可以使同一份代码无差别的运用到不同类型上,这也是多态的基本思想。

2. 向下转型

向下转型使将较为抽象的类转换为具体的类,但是这样做转换会出现一定的问题,比如四边形不是平行四边形的一种,所有的鸟不都是鸽子等等。子类一定是父类的一个实例,但是父类不一定是子类的实例,这时候就要加上显式类型转换

 

Quardrangle q = new Parallelogram();

Parallelogram p = (Parallelogram) q;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_52150376

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值