2012-04-23 34 views
2

是否有可能在父母中访问儿童在最终的方法中获取“孩子”对象的Class?

e。 G。我想让下面的代码输出“红蓝”。

class Color { 
    public final void printName() { 
     System.out.println(__Something_Here!!!__.class.getSimpleName()); 
    } 
} 

class Red extends Color; 

class Blue extends Color; 

main() { 
    Red red = new red(); 
    Blue blue = new blue(); 
    red.printName(); 
    blue.printName(); 
} 
+0

一个'final'方法与'this'的值或该方法被调用的实际对象/实例无关。它只是规定了在编译时如何解析绑定的确切方法。 – 2012-04-23 05:23:29

回答

1

您可以使用getClass()返回任何对象的类对象。

public final void printName() { 
    System.out.println(getClass().getSimpleName()); 
} 

JavadocgetClass()的细节

1

class Color { 
    public final void printName() { 
     System.out.println(this.getClass().getSimpleName()); 
    } 
} 

通过getClass()方法每个Java对象可以访问所有的类信息。

0

如果你不做出printName()私人。如果是受保护的,那么你可以调用

Red red = new Red(); 
Blue blue = new Blue(); 
red.printName(); 
blue.printName(); 

,然后调用

System.out.println(this.class.getSimpleName()); 

正因为如此,私人继承的方法禁止RedBlue

相关问题