声明一个类的时候,对于一个成员变量的声明,只能允许两种情况:
1)声明变量(域)的同时初始化该变量
2)声明变量(域),然后在构造器或者方法中初始化如果一句声明变量,一句初始化赋值,那么编译器就会报错,例如:public class Test {
private int a;
a = 10;
}请问为什么将声明和初始化分开,这么理所当然的事情,对于java的类成员变量却不允许呢?
1)声明变量(域)的同时初始化该变量
2)声明变量(域),然后在构造器或者方法中初始化如果一句声明变量,一句初始化赋值,那么编译器就会报错,例如:public class Test {
private int a;
a = 10;
}请问为什么将声明和初始化分开,这么理所当然的事情,对于java的类成员变量却不允许呢?
特意试了一下,没问题。你查下其他的问题吧。
public class TTT
{
private int a = 10;
private String s = "";
}
{a=10;}可以满足你的要求
对于java这么设计,我是这样理解的:
java是面向对象的语言,class类抽象为对象。
Field和Method对应对象的固有属性和行为。
而赋值和逻辑等操作,则相当于对象的动作,这些动作是和行为对应的,一连串的动作组成特定的行为。
所以呢,就把动作限定在行为里了。而a=10是一个赋值动作
private int a = 10 是一个属性的性质。说白了就是设计者当初这么设计了,所以就这样了。