关于多态问题,中编译看左边运行看右边

编译看左,运行看右的理解_编译看左边运行看右边的原理-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Mason97/article/details/104299634#:~:text=%E5%BC%95%20%E7%BC%96%E8%AF%91%20%E7%9C%8B%20%E5%B7%A6%20%EF%BC%8C%20%E8%BF%90%E8%A1%8C%E7%9C%8B%E5%8F%B3%20%E8%BF%99%E6%98%AF%E5%AF%B9%20Java%E5%A4%9A%E6%80%81,%E6%97%B6%E5%8D%B4%E4%B8%8E%E5%AD%90%E7%B1%BB%E4%B8%80%E7%9B%B4%20%28%E5%AD%90%E7%B1%BB%E5%8F%91%E7%94%9F%E9%87%8D%E5%86%99%29%20%E4%BE%8B%20%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%88%B6%E7%B1%BB%EF%BC%8C%E5%AE%9A%E4%B9%89%E4%B8%A4%E4%B8%AA%E6%96%B9%E6%B3%95%EF%BC%8C%E4%B8%80%E4%B8%AA%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95%EF%BC%8C%E4%B8%80%E4%B8%AA%E5%AE%9E%E4%BE%8B%E6%96%B9%E6%B3%95%20%E5%A6%82%E4%B8%8B%E6%89%80%E7%A4%BA%3A%20package%20com.yiyi.vx.duotai%3B%20publi口诀:
成员变量和静态方法:编译看左边,运行还看左边
非静态成员方法:编译看左边,运行看右边

package com.example.test;

class Father                 // Animal是父类,下面是继承它的子类Dog
{
    int a = 10;
    public static void staticMethod() {
        System.out.println("父类中的静态方法");
    }
    public void eat()
    {
        System.out.println("eat all");
    }
}
package com.example.test;
import com.example.test.Father;




class Son extends Father    //多态前提一:包括继承关系(或用接口实现)
{
    int a = 20;
    public static void staticMethod() {
        System.out.println("子类中的静态方法");
    }
    @Override
    public void eat()       //多态前提二:必须包括方法重写
    {
        System.out.println("only eat meat");
    }
}
package com.example.test;

public class TestMulti
{
    public static void main(String[] args)
    {
        //创建父亲类的对象进行测试 这并不是多态,多态原则是编译看左边运行看右边
        Father d = new Father();
        d.eat();//输出结果显示 only eat meat
        d.staticMethod();
        System.out.println(d.a);

        System.out.println("--------------------------------------------------------");
        Son son = new Son();
        son.eat();
        son.staticMethod();
        System.out.println(son.a);
        System.out.println("--------------------------------------------------------");

        //创建多态对象测试
        Father a = new Son();  //父类引用(Animal) 指向 子类对象(Dog)
        //编译看左边:想要保存成功,必须 使用 左边 也就是父类提供的功能!
        a.eat();             //运行看右边:最终执行结果以子类的实现为准,此处输出 only eat meat
        a.staticMethod();
        System.out.println(a.a);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值