Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Java中的向上转型和向下转型

首先要明白一点Java中的向上转型和向下转型他们都是建立在继承的基础上。一.向上转型    子类到父类的转换通常称作向上转型,通俗的说就是定义父类对象指向子类对象。下面通过一个例子来深入理解向上转型.//定义一个抽象的动物父类public abstract class Animal{    public abstract void Play();//此处需注意抽象方法没有方法体}//定义一个狗狗类,继承自Animalpublic class Dog extends Animal{   //重写父类的Play方法 public void Play() {    System.out.println("狗狗正在欢快的玩耍。。。。。");    }    //子类还有自己特有的eat方法 public void eat()  { System.out.println("狗狗正在欢快的吃着。。。。。"); }}//测试类public void Test{public static void main(String[] args) {   Animal animal=new Dog();//向上转型,父类对象指向子类对象 animal.Play();//能正常编译 animal.eat();//编译不通过,父类的引用无法调用子类特有的方法}}从上面这个例子可以总结出自乐装换成父类时的规则:01.将一个父类的引用指向一个子类对象,称为向上转型,自动进行类型转换。02.通过父类引用变量调用的是子类覆盖或继承父类的方法,不是父类的方法。03.通过父类引用变量无法调用子类特有的方法。    二.向下转型  上面已经说到,当向上转型发生后,将无法调用子类特有的方法。但是当需要调用子类特有的方法时,可以通过将父类在转换为子类来实现。向下转型:将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型。注意:必须进行强制类型转换。  //定义一个抽象的动物父类public abstract class Animal{    public abstract void Play();//此处需注意抽象方法没有方法体}//定义一个狗狗类,继承自Animalpublic class Dog extends Animal{
}//定义猫类,继承自Animalpublic class Cat extends Animal{}public class Test{      Animal animal=new Dog();      Dog dog=(Dog)animal;//向下转型,强制转换为狗狗对象      Cat cat=(Cat)animal;//运行出错}向下转型:转型时转的类型必须是父类对象所指的真实子类对象,不是任意的强制类型转换。最后总结一下吧!1、父类引用可以指向子类对象,子类引用不能指向父类对象。2、把子类对象直接赋给父类引用叫向上转型,向上转型不用强制转型。3、把指向子类对象的父类引用赋给子类引用叫向下转型,要强制转型。4、向上转型会丢失子类特有的方法,但是子类overriding 父类的方法,子类方法有效5、向上转型的作用,减少重复代码,父类做为参数,调用时子类作为参数,就是利用了向上转型。这样使代码变得简洁。体现了JAVA的抽象面向对象编程。本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130470.htm