在Java中,如果我想访问一个存在于随机对象的祖先类中的方法,我可以这样做吗?
someObject.Super.theMethodOfSuperClass();
例如:
public class A {
public int getOne() {
return 1;
}
}
public class B extends A {
public static void main(String args[]) {
B b = new B();
b.super.getOne(); // This..works?
}
}
最后一行会起作用吗?
P.S。我知道如果没有super
(b.getOne()
)正常工作,我只想了解 Object.SuperClasses.Methods 的事情..
答案 0 :(得分:0)
只需跳过super()
并使用b.getOne()
即可。来自A的getOne()
将被使用!
答案 1 :(得分:0)
答案 2 :(得分:0)
子类继承父类的方法。你可以这样做:
child.parentFunction();
在这种情况下不需要“超级”。
如果你想使用super,那就是当你重写子类中的方法但想要使用父类的实现时,如下所示。
class Parent{
public int doStuff(){
//parent code
}
}
//child class
class Child{
public int doStuff(){
super.doStuff();
//child code
}
}
答案 3 :(得分:0)
您不能将super
关键字与子类的对象一起使用。它可以在任何类的方法体内使用。您可以http://docs.oracle.com/javase/tutorial/java/IandI/super.html引用super
关键字。
类似地,如果你想要访问它,你可以直接或“覆盖那个方法。”
class A
{
public int getOne()
{
return 1;
}
}
class B extends A
{
public static void main(String args[])
{
B b = new B();
b.getOne();
}
}
或其他方式: -
class A
{
public int getOne()
{
return 1;
}
}
class B extends A
{
int getOne()
{
int i=super.getOne(); //here you can use super keyword
//some work here
return i; // return what you need
}
public static void main(String args[])
{
B b = new B();
b.getOne();
}
}
答案 4 :(得分:0)
简答:不,你不能使用子类中的。运算符引用super
类。
Long one:如果要从超级class
访问实例方法,那意味着您想要访问已经是{{的实例方法的方法1}}(除非该方法被标记为 invisile ,因为类' suptypes标记为以下访问级别class
或private
)。
话虽如此,您可以通过调用其签名来访问该方法:
default
如果在您的子类中已经覆盖了此方法,您甚至可以使用public class A {
public int getOne() {
return 1;
}
}
public class B extends A {
public int getOneFromSuperClass() {
return getOne(); // here you are calling the method #getOne from superclass A
}
public static void main(String args[]) {
B b = new B();
b.getOneFromSuperClass();
}
}
关键字引用该方法:
super
您甚至可以使用public class A {
public int getOne() {
return 1;
}
}
public class B extends A {
public int getOne() {
return 2; // You catch it, this method returns 2 not like it seems to be doing
}
public int getOneFromSuperClass() {
return super.getOne(); // Yes we can call the super getOne method to get the correct item
}
public static void main(String args[]) {
B b = new B();
System.out.println(b.getOneFromSuperClass()); This will print 1 not 2
}
}
引用调用super#getOne
方法,因为此方法来自超类:
B
请注意,public class A {
public int getOne() {
return 1;
}
}
public class B extends A {
public static void main(String args[]) {
B b = new B();
b.getOne();
}
}
类的refence已被用于调用B
类中定义的方法,原因很简单,因为此方法是固有的,然后成为A
的实例方法它是在那里定义的。