Java对象转型

对象的转型是基于对象多态性和继承性实现的。也就是说对象转型发生在父、子类中,通常伴随子类重写父类的方法。

对象向上、向下转型,观察代码

class Father{
    public void who(){
        System.out.println("我是你巴巴");
    }
}

class Son extends Father{
    public void who(){
        System.out.println("我是巴巴的龟儿子");
    }
    public void homework(){
        System.out.println("我在写作业");
    }
}

public class Test {
    public static void main(String[] args) {
        Father father = new Son();
        father.who();           
        Son son = (Son) father;
        son.homework();
    }
}

/******************输出****************************/
我是巴巴的龟儿子
我在写作业
Father father = new Son();//对象的向上转型

那么如何判断是否发生了对象的向上转型呢?我们只需要观察new后面的对象,new子类就是向上转型。当子类重写父类的方法后,则调用子类重写后的方法。

Son son = (Son) father;//对象的向下转型,儿子需要写作业,巴巴不需要吧,儿子不听话,强制他写作业

那么如何判断是否发生了对象的向下转型呢?我们只需要观察是否有强制转换的代码。

对象转型在jdk类库中的应用

 public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("abc");
        ArrayList<String> arrayList = (ArrayList<String>) list;//向下转型
        ArrayList<String> clone = (ArrayList<String>)arrayList.clone();//调用子类的克隆方法(深克隆)
        clone.add("123");
        System.out.println(list);
        System.out.println(clone);
    }

/******************输出****************************/
[abc]
[abc, 123]

 对象转型的好处;向上转型可以统一参数的接收和返回。向下转型体现了类之间的层次结构以及方法调用的灵活性、抽象性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值