超类型中的静态最终结果

dyl*_*nmc -1 java static final super supertype

为什么即使你已经声明了一个私有的静态最终变量,一个颜色 - 默认C,让我们说 - 然后你仍然不能this.defaultC在超级构造函数中使用(即你只能使用super(defaultC)而不是super(this.defaultC),即使它只是简单的等价defaultC.

我只是试图将Tile类扩展为Wall类,而Wall类我存储了所有墙的所有必要private static final变量(例如它们的宽度和高度,另一个int和默认颜色),而Tile类已经有了一些变量(但它们protected不是private).我不希望Field hides another field弹出警告(因为Tile.java和Wall.java对于许多变量都有相同的名称),所以我使用this.了我的私有静态最终变量,并且有很多错误.

这并不是特别令人不安(因为我只是有一些警告),但我只是想知道为什么.我猜测编译器根本不喜欢它,因为你不能this在超类型之前引用,但仍然完全相同.是否还没有添加这样的功能,忽略了这样的事情,还是有其他原因我看不到你不能使用super(this.PRIVATE_STATIC_FINAL_VARIABLE);

Wil*_*son 7

静态变量不属于对象的任何实例.的this关键字应该是指内使用的对象和变量的实例.虽然您可以使用this关键字来访问静态变量,但您不应该这样做.

此外,在子类中无法访问超类中标记为private的变量.

要使用this关键字从子类引用超类中声明的变量,必须声明该变量protectedpublic.