Liyiw
V2EX  ›  问与答

被 Java 的继承绕晕

  •  
  •   Liyiw · Apr 16, 2020 · 2559 views
    This topic created in 2220 days ago, the information mentioned may be changed or developed.
    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 吗

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