访问超类[Java]中定义的方法

访问超类[Java]中定义的方法,java,inheritance,methods,polymorphism,extends,Java,Inheritance,Methods,Polymorphism,Extends,如果我定义了两个类;一个名为Super,它有一个名为potato()的方法,第二个名为Sub,它扩展了Super 然后我声明一个Sub类型的对象 i、 e亚胡萝卜 在同一包装内的第三级/主管道内 我可以通过carrot.potato()访问第三个类/main中的potato()方法吗?因为每个子级都是父级,所以您也可以通过子级访问该方法。假设它是一个公共方法(正如您在评论中提到的) 如果您想了解我在第一条评论中的意思,Sub扩展了Super。这意味着sub是一款具有额外细节的超级跑车。这意味着您

如果我定义了两个类;一个名为Super,它有一个名为potato()的方法,第二个名为Sub,它扩展了Super

然后我声明一个Sub类型的对象

i、 e亚胡萝卜

在同一包装内的第三级/主管道内


我可以通过carrot.potato()访问第三个类/main中的potato()方法吗?

因为每个子级都是父级,所以您也可以通过子级访问该方法。假设它是一个公共方法(正如您在评论中提到的)


如果您想了解我在第一条评论中的意思,

Sub扩展了Super。这意味着sub是一款具有额外细节的超级跑车。这意味着您可以将子对象完全视为超级对象。所以carrot.potato()是正确的。

您能告诉我们代码吗?答案取决于这里的访问修饰符。我已经简化了一点,所以我不必担心显示我的代码。我所问的是相当假设性的,但假设potato()方法是公共的。@Agressive是的,您可以。如果您使用了前面提到的正确的访问修饰符,那么Suresh
potato
对于一个方法来说不是一个好名字(即使对于这样的例子也是如此)。@Zabri名称
potato
没有什么错。除非你想维护一个名字的健全性,比如
String#indexOf
Collection.stream
。漂亮,那正是我所想的。然而,我在尝试这样做时遇到了这个错误:“无法从super对非静态方法blabla进行静态引用”。如果该方法被自己类型的对象访问,为什么该方法必须是静态的?@AggressiveSneeze。这意味着您不是从对象访问方法,而是从静态方法访问方法。这与继承无关,您的问题似乎是关于继承的。但我通过(sub.methodname()类型的对象名称)访问它。这不对吗?对不起,我在用Python代码思考。如果您在一个静态代码中,并且您试图访问这个类中的另一个方法,那么它必须是静态的。除非您使用的是对象的方法。