在最终方法中获取“子”对象的类?

时间:2012-04-23 04:58:41

标签: java inheritance

是否可以在父级中访问子

即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();
}

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

有关详细信息,请参阅Javadoc getClass()

答案 2 :(得分:0)

如果您将printName()设为私有,则不会。如果它受到保护,那么您可以致电

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

然后致电

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

实际上,私人禁止RedBlue继承此方法。