当前位置 博文首页 > YHSevenWater的博客:Java多态性练习:调用方法和属性

    YHSevenWater的博客:Java多态性练习:调用方法和属性

    作者:[db:作者] 时间:2021-08-11 16:04

    一个程序搞懂Java多态性的使用

    Base base = sub,这是多态的使用,在下面的代码中已经对非多态和多态分别调用方法和属性进行了描述:

    ①若子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法,系统将不可能把父类里的方法转移到子类中;
    ②对于实例变量则不存在这样的现象,即使子类里定义了与父类完全相同的实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量。

    package com.java.oop3;
    /**
     * @ClassName AttributeMethodTest
     * @Description:    Java多态性的练习:调用方法和属性
     * @Author Seven
     * @Date 2021/7/30 15:23
     * @Version 1.0
     **/
    public class AttributeMethodTest {
        public static void main(String[] args) {
            //创建Sub对象sub
            Sub sub = new Sub();
            System.out.println(sub.number);
            sub.display();
            //sub和base都是引用类型数据,赋值操作为地址赋值。
            Base base = sub;
            //“==”在引用类型数据当中,判断两地址是否相等。
            System.out.println(base == sub);
            //对象的多态性,不适用于属性:(编译和运行都看左边)
            System.out.println(base.number);
            //对象的多态性,适用于方法,编译看左边(父类的引用),运行看右边(子类的对象)
            base.display();
        }
    }
    
    class Base {
        int number = 10;
    
        public void display(){
            System.out.println(this.number);
        }
    }
    
    class Sub extends Base {
        int number = 20;
    
        //重写display方法
        public void display(){
            System.out.println(this.number);
        }
    }
    

    在这里插入图片描述

    cs