向上向下类型转换
Posted 心忘则忘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向上向下类型转换相关的知识,希望对你有一定的参考价值。
package com.qf.demo5;
import com.qf.demo4.Cat;
public class Test
public static void main(String[] args)
// 儿子顶着父亲的名字去唱戏
Person p = new Son();
// 让儿子去 卸妆 唱流行歌曲
Son son = (Son) p; // 叫做向下转型
// Person person = new Person();
// Son son2 = (Son) person;
// 向下转型有条件: 必须是父类的引用指向子类的实体的时候 才能向下转型
Person person = new SecondSon();
// 二儿子想要跳舞 父类没有此功能 必须变回自己 才能由此功能
SecondSon secondSon = (SecondSon) person;
secondSon.dance();
// 子类 想要 代替父亲唱戏 就必须向上转型
// 向上转型的缺陷 就不能去使用自己特有的属性和方法 , 必须向下转型 才能调用自己特有的方法
show(new Son());
show(new SecondSon());
//Person person2 = new Cat();// 向上转型是编译时期的错误
// 大儿子进来此方法 调用唱流行歌曲的方法
// 二儿子进来 调用 跳舞的方法
public static void show(Person person)
person.Opera();
// 判断传入的对象到底属于那一个类的对象
// instanceof 判断左边的对象 是否属于右边的类
if(person instanceof Son)
Son son = (Son)person;
son.singSong();
else
SecondSon son1 = (SecondSon)person;
son1.dance();
/**
* 向上转型 是 父类的引用 指向子类的对象 从而调高了代码的复用性
* 出现缺陷 父类的引用无法指向子类的特有的方法
* 向下转型 在向上转型的基础之上 在把父类的引用给子类的引用
* 格式: 子类类名 子类对象名 = (子类类名)父类引用;
*
* 向上转型 向下转 都必须在继承关系当中
*
* 多态: 一个事物具有多种表现形态
*
* 多态可以编译时多态: 在编译过程中就能发现的多态
* 运行时多态: 再编译时期 检查不出来的多态 在运行时期才能看得出来的多态 比如 向下转型;
*/
package com.qf.demo5;
public class Son extends Person
@Override
public void Opera()
// TODO Auto-generated method stub
System.out.println("儿子唱京剧");
public void singSong()
System.out.println("儿子唱流行歌曲");
package com.qf.demo5;
public class SecondSon extends Person
@Override
public void Opera()
// TODO Auto-generated method stub
System.out.println("二儿子唱京剧");
public void dance()
System.out.println("二儿子跳舞");
package com.qf.demo5;
public class Person
public void Opera()
System.out.println("唱京剧");
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系
以上是关于向上向下类型转换的主要内容,如果未能解决你的问题,请参考以下文章