運(yùn)行結(jié)果
c:\> java Dispatch
Inside B's callme() method “
方法重寫時應(yīng)遵循的原則:
1)改寫后的方法不能比被重寫的方法有更嚴(yán)格的訪問權(quán)限(可以相同)。
2)改寫后的方法不能比重寫的方法產(chǎn)生更多的例外。
4. 其它
final 關(guān)鍵字
final 關(guān)鍵字可以修飾類、類的成員變量和成員方法,但final 的作用不同。
1) final 修飾成員變量:
final修飾變量,則成為常量,例如
final type variableName;
修飾成員變量時,定義時同時給出初始值,而修飾局部變量時不做要求。
2) final 修飾成員方法:
final修飾方法,則該方法不能被子類重寫
final returnType methodName(paramList){
…
}
3) final 類:
final修飾類,則類不能被繼承
final class finalClassName{
…
}來源:www.examda.com
實(shí)例成員和類成員
用static 關(guān)鍵字可以聲明類變量和類方法,其格式如下:
static type classVar;
static returnType classMethod({paramlist}) {
…
}
如果在聲明時不用static 關(guān)鍵字修飾,則聲明為實(shí)例變量和實(shí)例方法。
1) 實(shí)例變量和類變量
每個對象的實(shí)例變量都分配內(nèi)存,通過該對象來訪問這些實(shí)例變量,不同的實(shí)例變量是不同的。
類變量僅在生成第一個對象時分配內(nèi)存,所有實(shí)例對象共享同一個類變量,每個實(shí)例對象對類變量的改變都會影響到其它的實(shí)例對象。類變量可通過類名直接訪問,無需先生成一個實(shí)例對象,也可以通過實(shí)例對象訪問類變量。
2) 實(shí)例方法和類方法
實(shí)例方法可以對當(dāng)前對象的實(shí)例變量進(jìn)行操作,也可以對類變量進(jìn)行操作,實(shí)例方法由實(shí)例對象調(diào)用。
但類方法不能訪問實(shí)例變量,只能訪問類變量。類方法可以由類名直接調(diào)用,也可由實(shí)例對象進(jìn)行調(diào)用。類方法中不能使用this或super關(guān)鍵字。
例3-7 是關(guān)于實(shí)例成員和類成員的例子。
【例3-7】
class Member {
static int classVar;
int instanceVar;
static void setClassVar(int i) {
classVar=i;
// instanceVar=i; // 類方法不能訪問實(shí)例變量
}
static int getClassVar()
{ return classVar; }
void setInstanceVar(int i)
{ classVar=i; //實(shí)例方法不但可以訪問類變量,也可以實(shí)例變量
instanceVar=i; }
int getInstanceVar( )
{ return instanceVar; }
}
public class MemberTest{
public static void main(String args[]) {
Member m1=new member();
Member m2=new member();
m1.setClassVar(1);
m2.setClassVar(2);
System.out.println("m1.classVar="+m1.getClassVar()+"
m2.ClassVar="+m2.getClassVar());
m1.setInstanceVar(11);
m2.setInstanceVar(22);
System.out.println("m1.InstanceVar="+m1.getInstanceVar
()+" m2.InstanceVar="+m2.getInstanceVar());
}
}
運(yùn)行結(jié)果
c:\> java MemberTest
m1.classVar=2 m2.classVar=2
m1.InstanceVar=11 m2.InstanceVar=22
c:\> java Dispatch
Inside B's callme() method “
方法重寫時應(yīng)遵循的原則:
1)改寫后的方法不能比被重寫的方法有更嚴(yán)格的訪問權(quán)限(可以相同)。
2)改寫后的方法不能比重寫的方法產(chǎn)生更多的例外。
4. 其它
final 關(guān)鍵字
final 關(guān)鍵字可以修飾類、類的成員變量和成員方法,但final 的作用不同。
1) final 修飾成員變量:
final修飾變量,則成為常量,例如
final type variableName;
修飾成員變量時,定義時同時給出初始值,而修飾局部變量時不做要求。
2) final 修飾成員方法:
final修飾方法,則該方法不能被子類重寫
final returnType methodName(paramList){
…
}
3) final 類:
final修飾類,則類不能被繼承
final class finalClassName{
…
}來源:www.examda.com
實(shí)例成員和類成員
用static 關(guān)鍵字可以聲明類變量和類方法,其格式如下:
static type classVar;
static returnType classMethod({paramlist}) {
…
}
如果在聲明時不用static 關(guān)鍵字修飾,則聲明為實(shí)例變量和實(shí)例方法。
1) 實(shí)例變量和類變量
每個對象的實(shí)例變量都分配內(nèi)存,通過該對象來訪問這些實(shí)例變量,不同的實(shí)例變量是不同的。
類變量僅在生成第一個對象時分配內(nèi)存,所有實(shí)例對象共享同一個類變量,每個實(shí)例對象對類變量的改變都會影響到其它的實(shí)例對象。類變量可通過類名直接訪問,無需先生成一個實(shí)例對象,也可以通過實(shí)例對象訪問類變量。
2) 實(shí)例方法和類方法
實(shí)例方法可以對當(dāng)前對象的實(shí)例變量進(jìn)行操作,也可以對類變量進(jìn)行操作,實(shí)例方法由實(shí)例對象調(diào)用。
但類方法不能訪問實(shí)例變量,只能訪問類變量。類方法可以由類名直接調(diào)用,也可由實(shí)例對象進(jìn)行調(diào)用。類方法中不能使用this或super關(guān)鍵字。
例3-7 是關(guān)于實(shí)例成員和類成員的例子。
【例3-7】
class Member {
static int classVar;
int instanceVar;
static void setClassVar(int i) {
classVar=i;
// instanceVar=i; // 類方法不能訪問實(shí)例變量
}
static int getClassVar()
{ return classVar; }
void setInstanceVar(int i)
{ classVar=i; //實(shí)例方法不但可以訪問類變量,也可以實(shí)例變量
instanceVar=i; }
int getInstanceVar( )
{ return instanceVar; }
}
public class MemberTest{
public static void main(String args[]) {
Member m1=new member();
Member m2=new member();
m1.setClassVar(1);
m2.setClassVar(2);
System.out.println("m1.classVar="+m1.getClassVar()+"
m2.ClassVar="+m2.getClassVar());
m1.setInstanceVar(11);
m2.setInstanceVar(22);
System.out.println("m1.InstanceVar="+m1.getInstanceVar
()+" m2.InstanceVar="+m2.getInstanceVar());
}
}
運(yùn)行結(jié)果
c:\> java MemberTest
m1.classVar=2 m2.classVar=2
m1.InstanceVar=11 m2.InstanceVar=22