这是一个Java问题:
实例化引用类型不同于Object
类型的Object
时,确定成员可用性的方案有哪些?
例如:
Shape shp = new Square(2, 4); //Where Square extends Rectangle and implements Shape
Shape
或Square
方法将与此代码关联吗?所有方法是否都是静态的有关系吗?
上课隐瞒对选择有影响吗?
如果重写了方法,那会影响选择吗?
这是关于同一件事的更详细的问题:
public abstract class Writer {
public static void write() {System.out.println("Writing...");}
}
public class Author extends Writer {
public static void write() {System.out.println("Writing book");}
}
public class Programmer extends Writer {
public static void write() {System.out.println("Writing code");}
public static void main(String[] args) {
Writer w = new Programmer();
w.write();
}
}
上面的代码为什么会产生输出->正在编写...
然后以下代码产生输出->编写代码
public abstract class Writer {
public void write() {System.out.println("Writing...");}
}
public class Author extends Writer {
public void write() {System.out.println("Writing book");}
}
public class Programmer extends Writer {
public void write() {System.out.println("Writing code");}
public static void main(String[] args) {
Writer w = new Programmer();
w.write();
}
}
当实例化具有与对象类型不同的引用类型的对象时(如本示例),确定成员可用性的方案是什么?
最佳答案
Shape或Square方法会与此代码关联吗?是
仅允许使用shp
引用变量调用Shape已知的方法。
所有方法是否都是静态的有关系吗?
如果所有方法都是静态的,则不能使用shp
引用变量进行多态调用。
上课隐瞒对选择有影响吗?
是的,shp
参考变量的类型将完全确定调用哪个方法。将在编译时自行决定。
如果重写了方法,那会影响选择吗?
静态方法不是多态的,因此不会存在任何替代方案。