3 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
將它包裝在一個(gè)方法中,您將看到兩者都有效。不允許直接在類主體中編寫代碼塊。
class BaseClass extends DerivedClass {
public static void main(String[] args) {
BaseClass b = new BaseClass();
DerivedClass d = new DerivedClass();
b.bonus = 200;
d.bonus = 400;
}
}
有初始化器,盡管它們也必須在{}.
{
BaseClass b = new BaseClass();
DerivedClass d = new DerivedClass();
b.bonus = 200;
d.bonus = 400;
}
類主體具有明確定義的結(jié)構(gòu)(字段聲明、方法聲明、塊聲明)。您只需遵循該結(jié)構(gòu)即可。
8.1.6. 類主體和成員聲明
類主體可以包含類成員的聲明,即字段 (§8.3)、方法 (§8.4)、類 (§8.5) 和接口 (§8.5)。
類主體還可以包含類的實(shí)例初始值設(shè)定項(xiàng) (§8.6)、靜態(tài)初始值設(shè)定項(xiàng) (§8.7) 和構(gòu)造函數(shù)聲明 (§8.8)。
ClassBody:
{ {ClassBodyDeclaration} }
ClassBodyDeclaration:
ClassMemberDeclaration
InstanceInitializer
StaticInitializer
ConstructorDeclaration
ClassMemberDeclaration:
FieldDeclaration
MethodDeclaration
ClassDeclaration
InterfaceDeclaration
;

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
您應(yīng)該閱讀“Head First Java”一書。
在您的代碼中,您試圖更改對象的狀態(tài),這就是您收到錯(cuò)誤的原因。你可以在方法或塊中做這樣的事情。
DerivedClass 應(yīng)該調(diào)用 BaseClass,而 BaseClass 應(yīng)該調(diào)用 DerivedClass(這基于 extends 關(guān)鍵字。)
糟糕的代碼(具有主要方法的超類。);我剛剛刪除了編譯錯(cuò)誤,請參見下面的代碼。
希望對你有幫助。
public class DerivedClass {
public int bonus = 100;
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
class BaseClass extends DerivedClass {
BaseClass b = new BaseClass();
DerivedClass d = new DerivedClass();
// code in block
{
b.bonus = 200; // no here
d.bonus = 400; // no here
System.out.println("bonus this year is:" + " " + d.bonus); // fixed typo
}
}

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
不允許直接在類主體中編寫語句。你需要把它們放在一個(gè)方法中。
不允許聲明意味著不允許以下任何內(nèi)容:
Assignment expressions (aValue = 23.45;)
Any use of ++ or -- (aValue++;)
Method invocations (System.out.println("Hello World!");)
Object creation expressions (Car mycar = new Car();)
添加回答
舉報(bào)