V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Liyiw
V2EX  ›  问与答

被 Java 的继承绕晕

  •  
  •   Liyiw · 2020-04-16 18:11:54 +08:00 · 1934 次点击
    这是一个创建于 1674 天前的主题,其中的信息可能已经有所发展或是发生改变。
    class Person {
        int a = 100;
    
        public int getA() {
            return a;
        }
    }
    
    class Man extends Person {
        int a = 0;
    
        public int getA() {
            return a;
        }
    }
    
    class Demo {
        public static void main(String[] args) {
            Person person = new Man();
            System.out.println(person.a); // 100
            System.out.println(person.getA()); // 0
        }
    }
    

    v 友可以提供一下什么关键词可以 google 吗

    第 1 条附言  ·  2020-04-16 22:35:47 +08:00
    关键词:多态、向上转型、隐藏字段
    12 条回复    2020-04-16 20:14:38 +08:00
    crella
        1
    crella  
       2020-04-16 18:27:38 +08:00
    为什么是 Person person = new Man();而不是 Man person = new Man();呢
    不懂帮问
    Liyiw
        2
    Liyiw  
    OP
       2020-04-16 18:29:17 +08:00
    @crella 试卷题目,我也想知道这个是什么机制
    0DBBFF
        3
    0DBBFF  
       2020-04-16 18:31:02 +08:00   ❤️ 1
    多态啊
    mrmre
        4
    mrmre  
       2020-04-16 18:51:41 +08:00
    向上转型,动态绑定
    aureole999
        5
    aureole999  
       2020-04-16 18:58:45 +08:00   ❤️ 1
    你问的是 a 属性为什么不一样吗?
    这叫 Hiding Fields 。实际应用中不推荐
    liujan
        6
    liujan  
       2020-04-16 19:19:20 +08:00   ❤️ 1
    java 属性多态。 访问变量看声明,访问方法看实际对象类型
    charlie21
        7
    charlie21  
       2020-04-16 19:53:23 +08:00
    直接模仿范例的写法,不要瞎写,搞明白茴字四种写法也没用
    zxCoder
        8
    zxCoder  
       2020-04-16 20:05:21 +08:00
    java 要是哪个版本能把这些写法禁掉就好了,考试就不会出这些题目了
    TuringGunner
        9
    TuringGunner  
       2020-04-16 20:11:35 +08:00 via Android
    这就是常规的多态吧
    zhuawadao
        10
    zhuawadao  
       2020-04-16 20:13:52 +08:00
    关键字"符号引用","直接引用","静态分派","动态分派"
    yjxjn
        11
    yjxjn  
       2020-04-16 20:14:00 +08:00   ❤️ 1
    你问的意思是不是为啥 person.a 打印出来是 100,而 person.getA 打印出来是 0 ?
    (那就按照我对问题的理解来回答这个问题了。。。下回记得给问题啊,甩篇代码谁知道你问的啥)
    这个是写的 Java 三大特性之一,多态,向上转型。这里有多态的内容
    https://www.runoob.com/java/java-polymorphism.html
    yjxjn
        12
    yjxjn  
       2020-04-16 20:14:38 +08:00
    @charlie21 说实在,我是从来没这么写过,因为这么写容易挨打,CR 的时候也会被说~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2753 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:34 · PVG 20:34 · LAX 04:34 · JFK 07:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.