博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习笔记二十六:Java多态中的引用类型转换
阅读量:6989 次
发布时间:2019-06-27

本文共 1284 字,大约阅读时间需要 4 分钟。

Java多态中的引用类型转换

 

 

引用类型转换;

 

1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换;

2.向下类型转换(强制类型转换),是大类型到小类型的转换;

3.instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题;

  向上类型转换是没有风险的,可以类比为一个杯子里的水倒入一个壶里(当然这个壶肯定容量比杯子要大),但是向下类型转换是有风险的,这就相当于一壶水向杯子里倒,肯定会有溢出。

 

举一个例子;

Initail.java:

package com.test;public class Initail {    public static void main(String[]args){             Dog dog = new Dog();//先用子类的引用指向这个对象         Animal animal = dog;//自动类型提升 向上类型转换         Dog dog2 = (Dog)animal;//向下类型转换 强制类型转换但是存在风险         Cat cat =(Cat)animal;//1.编译时Cat类型2.运行时Dog类型所以不能执行    }}

运行失败:

修改后的Initial.java:

package com.test;public class Initail {    public static void main(String[]args){             Dog dog = new Dog();//先用子类的引用指向这个对象         Animal animal = dog;//自动类型提升 向上类型转换         if(animal instanceof Dog){         }else{             System.out.println("无法进行类型转换 转换Dog类型");         }         if(animal instanceof Cat){             Cat cat = (Cat)animal;//1.编译时Cat类型2.运行时Dog类型所以不能执行         }else{             System.out.println("无法进行类型转换 转换为Cat类型");         }    }}

Cat.java:

package com.test;public class Cat extends Animal{}

Dog.java:

package com.test;//Dog对象继承于Animal类public class Dog extends Animal{    public int age = 20;        public void method(){        eat();    }}

运行结果为:

 

转载于:https://www.cnblogs.com/pureqh/p/9170458.html

你可能感兴趣的文章
2.Xml与多个对象的映射(聚合或组合)及注意事项
查看>>
java报表开发之报表总述
查看>>
正确释放Vector的内存
查看>>
【零基础学习iOS开发】【02-C语言】04-常量、变量
查看>>
最小堆的基础操作(Java)
查看>>
bzoj2039: [2009国家集训队]employ人员雇佣(最小割)
查看>>
AspNetCore Mvc 使用 PartialView
查看>>
bzoj1227: [SDOI2009]虔诚的墓主人(树状数组,组合数)
查看>>
Sql Server 网络配置
查看>>
Oracle案例11——Oracle表空间数据库文件收缩
查看>>
看博客学学Android(十四)
查看>>
在Windows下安装配置jforum测试环境
查看>>
WEB基础
查看>>
AtCoder Regular Contest 081
查看>>
树状数组模板
查看>>
2017"百度之星"程序设计大赛 - 初赛(A)
查看>>
Python3 输出
查看>>
实验四 shell编程2
查看>>
多线程的那点儿事(基础篇)
查看>>
解决ViewPager多次刷新后重叠问题
查看>>