【发布时间】:2015-03-23 02:16:14
【问题描述】:
当我有这些课程时:
public class Master{
public String test(){
return "I am the master object";
}
public String boeh(){
return "Only inside master";
}
}
public class Slave extends Master{
public String test(){
return "I am the slave object";
}
public String mehh(){
return "Only insde slave";
}
}
我知道我可以这样做:Master jedi = new Slave()(因为 Slave 是 Master 的子类型)。
因为我可以...为什么我会在变量设置为 Master 时得到"I am the slave object"。我得到了 Slave.test() 的结果,但无法访问 Slave.mehh()。
那么当变量忽略这个时为什么要给它一个类型呢?或者换句话说,当绝地大师实际上是奴隶绝地时,它有什么功能来声明大师?
【问题讨论】:
-
这是
dynamic method binding的一个例子,不能访问Slave.mehh()- 因为,你只能访问在子类中被覆盖的方法。 -
你问的是C#还是Java?
-
这就是(Java)多态的本质。如果它不这样做,那么多态的意义何在?
-
@Vsevolod Goloviznin 在一般 oop 的情况下以及与 java 或 c# 一起使用
-
@sirwilliam Java 和 C# 可以不同地处理子类化。
标签: java oop inheritance polymorphism extends