java 向上转型向下转型
2017-02-07 14:41
141 查看
1.名词解释
向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口。向下转型:父类引用的对象转换为子类类型称为向下转型。
先看两个类:
//Fahther类 class Father { public void out() { System.out.println("father"); } } //Son类,继承自Father class Son extends Father { public void out() { System.out.println("son"); } public void out2() { System.out.println("son2"); } }
2.向上转型
向上转型示例:Father father=new Son();//定义了一个Father的变量,实际上却赋值了一个Son类型
2.1 向上转型的时候,会遗失子类独有的方法,根据以上两个类,Son类转型成为Father类的时候,Son类的“out2”方法会遗失。也就说以下写法会报错:
Father father=new Son(); father.out2();//会报错
2.2 向上转型的对象可以调用父类拥有的方法,具体执行的是子类原本的代码块
Father father=new Son(); father.out();//因为father变量引用的本质还是new Son,所以father.out()会执行Son类的out()代码块.
3.向下转型
顾名思义,向下转型就是:Father -> Son但是,有条件。
Father father = new Father(); Son son=(Father)father;//这是不允许的
以上代码就是不被允许的,因为:只有本质是子类的类型才能被向下转型
以上代码中,father本质是new Father()。
只有被向上转型过的子类,才能执行向下转型
Father father=new Son(); Son son=(Son) father;//这是可行的,因为father变量引用的是new Son(),它本质上是一个Son类的对象
4.代码示例
package com.ycty; public class ClassTest { public static void main(String[] args) { Father father=new Father(); Son son=new Son(); father.out(); son.out(); //向上转型 father=new Son(); father.out();//实际执行的是Son重写的方法 //向下转型 son=(Son)father; son.out(); father =new Father(); son=(Son)father; } } /** * * Father类 * */ class Father { public void out() { System.out.println("father"); } } /** * * Son类 * */ class Son extends Father { public void out() { System.out.println("son"); } public void out2() { System.out.println("son2"); } }
输出:
相关文章推荐
- Java向上转型与向下转型(good)
- JAVA的向上转型与向下转型(二)
- Java中的向上转型 & 向下转型 ( OOP )
- java 对象的向上、向下转型
- Java多态(利用向上向下转型和反射机理)
- java向上转型 向下转型(upcasting downcasting)
- Java向上转型与向下转型
- Java 向上转型与向下转型
- java中向上转型(upcast)和向下转型(downcast)
- Java 向下和向上转型
- JAVA中的向下转型(downcasting)及泛型与向上转型(upcasting)及RTTI、反射机制
- java 向上转型和向下转型
- java向上转型和向下转型
- JAVA中的向上转型与向下转型
- Java向上转型与向下转型
- Java 向上转型和向下转型
- Java 向上转型和向下转型
- JAVA中的向上转型与向下转型
- java向上转型与向下转型
- JAVA中的向下转型(downcasting)及泛型与向上转型(upcasting)及RTTI、反射机制