回答
您可以在子类中分配变量。你不能做的是把语句放在只允许声明的地方。 (注意:int i = 10;
是一个声明 - 不声明。)
在这种情况下,构造很可能会建立一个默认值合适的地方(亚型):
class b extends a {
public b() {
i = 1;
}
}
由于DAMO建议,一个初始化块也可以工作。这在Initializing Fields tutorial讨论:
通常情况下,你干脆把代码在构造函数中初始化实例变量,[但]有两种选择使用构造函数初始化实例变量:初始化块和最终方法。
...是一个声明 - 不是一个声明。我认为这叫做声明声明。大声笑 –
@ su-我没有在这里使用精确的JLS支持的术语,很好的情况是这样;问题的关键在于语言语法层面上的区别,根据具体情况允许(或禁止)不同的产品。 – user2246674
这很好:)我明白了。 –
当你使用的是默认的访问修饰符,这意味着在a
类的属性是同一个包中的所有类,包括子类b
访问。但是,您必须在方法中访问该属性。
class a {
int i; // this is an instance variable
}
实例变量是一类级别,它们可以被分配到文字或引用变量,或者你可以把它有它的默认值,子类可以使用公共实例里面的方法或构造不在一流的水平,你做的事:
class b extends a {
i = 3; // assgining a literal to i is compilation error
}
,因为它是类字段和实例变量声明,没有什么分配超类的实例变量的位置。
如果您想在类a中使用i
,您必须在某个方法或构造函数中使用它。
class b extends a {
a(){
i = 4;
}
void doSomething(){
i = 5;
}
}
所有的答案是正确的,但没有一个人说,你可以做到这一点..
class b extends a {
{
i=1;
}
}
,这将编译和执行是后a constructor
之前b constructor
- 1. 为什么我不能将父类分配给子类类型的变量?
- 2. 为什么我不能在try块中分配对象变量?
- 3. 为什么Pagingnation类的变量不能分配?
- 4. 为什么不能将静态类变量分配给堆栈?
- 5. 为什么我不能直接分配变量值?
- 6. 为什么我不能将循环分配给变量?
- 7. 为什么我不能将Scala对象分配给Java变量?
- 8. 为什么我不能将location.hash分配给一个变量?
- 9. 为什么我不能在JavaScript中的函数中分配一个变量?
- 10. 为什么变量有时不分配?
- 11. 为什么我不能分配element.innerHTML?
- 12. 为什么局部变量不能在声明和全局变量分配?
- 13. 为什么我的子类不存在变量?
- 14. 为什么我不能更改变量?
- 15. 为什么Python类定义不能为自己分配一个闭包变量?
- 16. 为什么最终字段变量不能在Java中分配为空白?
- 17. 为什么右值不能分配到constexpr参考变量
- 18. 为什么你不能在子类中用常量覆盖父变量? (PHP)
- 19. 为什么我可以为变量分配不同类型的值?
- 20. 为什么我们需要投放变量而不分配它?
- 21. 为什么我不能在Quartz.NET中为'typeof'使用变量?
- 22. 为什么我的变量不能自动装配?
- 23. 为什么不在UIViewController子类中分配UIWindow对象?
- 24. 为什么我不能在我的settings.settings中分配一些类型?
- 25. 为什么我不能将TextLength分配给Long值类型?
- 26. 为什么我不能制作GPU变量? (无法使用cudaMalloc分配内存)
- 27. 为什么我不能将一个wordpress函数分配给一个变量?
- 28. 为什么我不能用这个程序重新分配父变量?
- 29. 为什么我不能访问其他类的公共变量?
- 30. 为什么我的扫描仪类不能读取3变量
做一个方法。 – gd1