Java 未为类型基定义子方法

Java 未为类型基定义子方法,java,inheritance,Java,Inheritance,正如代码所暗示的,我想知道的是,在内存分配中到底发生了什么,隐藏了Base,使其无法调用Child的额外方法,以及它被调用了什么 是否有一种通过Base调用方法的方法。 请帮助base.Method2无效,因为基类没有具有该名称的方法,这就是错误的含义 未为类型基定义方法Method2 既然您正在这样做: public class Base { public String Method1() { System.out.println("Inside Base method

正如代码所暗示的,我想知道的是,在内存分配中到底发生了什么,隐藏了Base,使其无法调用Child的额外方法,以及它被调用了什么 是否有一种通过Base调用方法的方法。 请帮助

base.Method2无效,因为基类没有具有该名称的方法,这就是错误的含义

未为类型基定义方法Method2

既然您正在这样做:

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()