Java 未为类型基定义子方法
正如代码所暗示的,我想知道的是,在内存分配中到底发生了什么,隐藏了Base,使其无法调用Child的额外方法,以及它被调用了什么 是否有一种通过Base调用方法的方法。 请帮助base.Method2无效,因为基类没有具有该名称的方法,这就是错误的含义 未为类型基定义方法Method2 既然您正在这样做:Java 未为类型基定义子方法,java,inheritance,Java,Inheritance,正如代码所暗示的,我想知道的是,在内存分配中到底发生了什么,隐藏了Base,使其无法调用Child的额外方法,以及它被调用了什么 是否有一种通过Base调用方法的方法。 请帮助base.Method2无效,因为基类没有具有该名称的方法,这就是错误的含义 未为类型基定义方法Method2 既然您正在这样做: public class Base { public String Method1() { System.out.println("Inside Base method
public class Base {
public String Method1() {
System.out.println("Inside Base method 1");
return "";
}
}
class Child extends Base {
static Base o = null;
public String Method1() {
System.out.println("Inside Base method 1");
return "";
}
public String Method2() {
return "Cant be called with base reference";
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Base base = new Child();
base.Method1();
base.Method2();***(Error : **The method Method2() is undefined for the type Base**)***
}
}
你有一个选择是铸造,然后你可以调用该方法
Base base = new Child();
您需要进一步研究多态性是如何工作的。 您的实例是一个子实例,但您将其用作基础。贝斯对他的孩子一无所知,他只知道他的方法。 将实例强制转换为子实例以访问其自定义方法
Base base = new Child();
base.Method1();
((Child) base).Method2();
您将它声明为一个基,因此它是一个基,javac没有一个可能的副本:@RC。出于兴趣,你为什么要将重复的内容作为评论而不是接近的投票发布?@JoeC因为如果我投票关闭它,问题就结束了,而这个重复内容就是如此
((Child)base).Method2()