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" 
    } 
} 
相關問題