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