
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 crella 2020-04-16 18:27:38 +08:00 为什么是 Person person = new Man();而不是 Man person = new Man();呢 不懂帮问 |
3 0DBBFF 2020-04-16 18:31:02 +08:00 多态啊 |
4 mrmre 2020-04-16 18:51:41 +08:00 向上转型,动态绑定 |
5 aureole999 2020-04-16 18:58:45 +08:00 你问的是 a 属性为什么不一样吗? 这叫 Hiding Fields 。实际应用中不推荐 |
6 liujan 2020-04-16 19:19:20 +08:00 java 属性多态。 访问变量看声明,访问方法看实际对象类型 |
7 charlie21 2020-04-16 19:53:23 +08:00 直接模仿范例的写法,不要瞎写,搞明白茴字四种写法也没用 |
8 zxCoder 2020-04-16 20:05:21 +08:00 java 要是哪个版本能把这些写法禁掉就好了,考试就不会出这些题目了 |
9 TuringGooner 2020-04-16 20:11:35 +08:00 via Android 这就是常规的多态吧 |
10 zhuawadao 2020-04-16 20:13:52 +08:00 关键字"符号引用","直接引用","静态分派","动态分派" |
11 yjxjn 2020-04-16 20:14:00 +08:00 你问的意思是不是为啥 person.a 打印出来是 100,而 person.getA 打印出来是 0 ? (那就按照我对问题的理解来回答这个问题了。。。下回记得给问题啊,甩篇代码谁知道你问的啥) 这个是写的 Java 三大特性之一,多态,向上转型。这里有多态的内容 https://www.runoob.com/java/java-polymorphism.html |