二級Java考試輔導(dǎo)教程:3.2Java語言的面向?qū)ο筇匦訹3]

字號:

運(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