欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java多态的向上转型的概念及实例分析

程序员文章站 2022-06-17 23:03:32
1、说明向上转型就是把一个子类引用给一个父类引用,也就是父类引用 引用了子类的对象,即父类 父类对象 = 子类实例。此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,而不是父类的方法。但是调用...

1、说明

向上转型就是把一个子类引用给一个父类引用,也就是父类引用 引用了子类的对象,即父类 父类对象 = 子类实例。

此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,而不是父类的方法。但是调用的属性还是父类的属性。

2、实例

class animal {
    public string name;
    public void eat() {
        system.out.println(this.name + " 正在吃");
    }
}
class cat extends animal {
    
}
public class test extends testdemo {
 
    public static void main(string[] args) {
        //父类引用 引用了 子类引用所引用的对象
        cat cat = new cat();
        animal animal = cat;//向上转型
    }
}

知识点扩充:

java允许把子类对象赋值给父类的引用变量,不用做任何强制转换,系统自动完成。向上转型来自于自下而上的继承关系,子类继承父类,子类是一种特殊的父类,所以向上转型的操作其实是情理之中的。

下面依照简单的代码,来试着理解向上转型的概念与好处。

package com.my.pac14;

/**
 * @auther summerday
 */
public class dynamicbinding {
    //object是所有类的超类,根据向上转型,该方法可以接受任何类型的对象
    public static void test(object x) {
        system.out.println(x.tostring());
    }

    public static void main(string[] args) {
        test(new primarystudent());//student
        test(new student());//student
        test(new person());//person
        test(new object());//java.lang.object@1b6d3586
    }
}

class person extends object {
    @override
    public string tostring() {
        return "person";
    }
}

class student extends person {
    @override
    public string tostring() {
        return "student";
    }
}

class primarystudent extends student {
}

到此这篇关于java多态的向上转型的概念及实例分析的文章就介绍到这了,更多相关java多态的向上转型是什么内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!