2016-01-22 76 views
0

假设我有两个类有没有办法使用继承的超类方法获取类名?

class A { 
public static String getMyClassname() 
{ 
    // return the class name it was called on 
} 
} 


class B extends A{} 

是否有在java中的任何工具,可以让我,如果我叫A.getMyClassname()我会得到A ,如果我打电话B.getMyClassname(),我会得到B

+0

我已经花了足够的时间搜索谷歌和stackoverflow这个问题,我坚持在这里的问题规则。 所以,如果你看到这个问题是没有用的,并且要对它进行倒票,请至少解释原因。 –

回答

0

是的,如果你做的方法非静态

class A { 

    public String getMyClassname() { 
     return this.getClass().getSimpleName(); 
    } 
} 


class B extends A {} 

然后,您可以做

A a = new A(); 
B b = new B(); 

System.out.println(a.getMyClassname()); 
System.out.println(b.getMyClassname()); 

输出

A 
B 
1

为什么使用静态?只需重写该函数而不使用静态,然后执行您的方法调用。

事情是这样的:

class A { 
    public String getMyClassname() 
    { 
     return "A" 
    } 
} 


    class B extends A { 
    @override 
    public String getMyClassname() 
    { 
     return "B" 
    } 
} 
相关问题