栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础知识18:对象的多态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础知识18:对象的多态


package com.hiyo.HighClass;

//对象向上转型的例子
class PolyA {
    public void method1() {
        System.out.println("PolyA---->method1") ;
    }
    public void method2() {
        this.method1();
    }
}
class PolyB extends PolyA {
    public void method1() {
        System.out.println("PolyB---->method1");
    }
    public void method3() {
        System.out.println("PolyB---->method3");
    }
}
class PolyC extends PolyA {
    public void method1() {
        System.out.println("PolyC---->method1");
    }
}

public class PolymDemo1 {
    public static void main(String[] args) {
        PolyB pb = new PolyB() ;
        PolyA pa = pb ;//发生向上转型
        pa.method1(); //调用子类覆写过的方法
        //PolyB---->method1
        //父类对象调用方法,实际上调用的是子类覆写过的方法
        //发生向上转型,所调用的方法肯定是被子类覆写过的方法

        pa.method2() ;
        //父类对象调用自己的方法
        //method2()中的this.method1(),this还是指子类对象

        //pa.method3() ;
        //method3只在子类中进行了定义,没有在父类中定义
        //无法用父类对象调用只在子类中定义的方法。
        //只在子类中定义的方法,必须用子类对象调用
        //或者父类对象采用向下转型。
        
        ((PolyB)pa).method3() ;//向下转型
        //如果要调用子类自己的方法,只能用子类生命对象

        

        //对象的多态实例
        PolyB pb3 = new PolyB() ;
        PolyC pc3 = new PolyC() ;
        mainMethod(pb3);
        mainMethod(pc3);
    }

    public static void mainMethod(PolyA pa) {
        pa.method1();
    }
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531472.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号