<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java世界
    有些人注定要生活在彼岸,可以親近可以愛憐,甚至可以窮盡一生去思念,只是無法觸及有些距離,注定不能跨越只能倆倆相望,就像有些愛只能養在心里長在眼中,不能捧在手里放在身邊,注定只能邂逅無法遭遇!
    posts - 12,comments - 15,trackbacks - 0
    1.關于在靜態方法中訪問非靜態內部類的問題
    public class Outer{
    public String name = "Outer";
    public static void main(String argv[]){
    //Inner myinner = new Inner(); //直接用這句話創建會編譯錯誤
    Outer myouter=new Outer(); //先創建外部類的對象
    Outer.Inner myinner=myouter.new Inner();
    myinner.showName();
    }//End of main
    //下面這段代碼用來測試這種n煩的辦法
    public void amethod(){
    Outer myouter=new Outer();
    Outer.Inner myinner=myouter.new Inner();
    myinner.showName();
    }
    //非靜態方法訪問非靜態內部類
    private class Inner{
    String name =new String("Inner");
    void showName(){
    System.out.println(name);
    }
    }//End of Inner class
    }
    在非靜態方法訪問非靜態內部類直接創建該內部類的對象:new Inner().showName();當然也可以采取這種n煩的辦法假設private class Inner改成static private class Inner, 那么在靜態方法中訪問靜態內部類也是直接創建該內部類的對象,即Inner myinner = new Inner(),或者Outer.Inner myinner = new Outer.Inner()也行得通,可見這種n煩的方法在上面三種情況下都是可以用的。
    2.Abstract方法不能用final,static修飾非abstract方法在abstract類中可以用final,static
    抽象類中的抽象方法不能是final,但是非抽象方法前加final可以編譯通過因為abstract和final相互排斥,前者專用于繼承,后者禁止繼承
    抽象類中的抽象方法不能為static
    非抽象方法可以為static
    包裹類Integer、 String 、Float、 Double等都是final類,不能被繼承!Integer i=new Integer(“6”);如果字符串不是數字,會產生運行異常(不會出現編譯錯誤)但是對于boolean,這個規則不適用。當字符串時(大小寫無關),Boolean對象代表的數值為true,其他字符串均為false如:
    Boolean b = new Boolean(“afiwou”); 代表false
    Boolean b = new Boolean(“tRue”); 是true
    3.多態性、虛擬方法調用
    public class Test8 {
    public static void main(String [] args){
    Base b = new Subclass();
    System.out.println(b.x);
    System.out.println(b.method());
    }
    }
    class Base{
    int x = 2;
    int method(){
    return x;
    }
    }
    class Subclass extends Base{
    int x = 3;
    int method(){
    return x;
    }
    }
    結果是2,3,而不是3,3
    Employee e = new Manager();
    e.department = " Finance " ;
    //department 是Manager的一個特殊屬性
    聲明變量e后,你能訪問的對象部分只是Employee的部分;Manager的特殊部分是隱藏的。這是因為編譯器應意識到,e 是一個Employee,而不是一個Manager。但重寫的方法除外
    在你接收父類的一個引用時,你可以通過使用instanceof運算符判定該對象實際上是你所要的子類,并可以用類型轉換該引用的辦法來恢復對象的全部功能。為什么說“恢復對象的全部功能”,就是因為上一格所描述的,子類對象賦給父類句柄后,該句柄不能訪問子類的那些特殊屬性和方法,要用就要重新造型。這其實是多態參數的后續應用,形成這樣一個鏈條:傳入多態參數??instanceof判斷類型??casting??恢復功能
    Employee e = new Manager();
    e.getDetails();
    在此例中,Manager 重寫了Employee的getDetail()方法。被執行的e.getDetails()方法來自對象的真實類型:Manager。事實上,執行了與變量的運行時類型(即,變量所引用的對象的類型)相關的行為,而不是與變量的編譯時類型相關的行為。這是面向對象語言的一個重要特征。它也是多態性的一個特征,并通常被稱作虛擬方法調用??“動態綁定”
    寫了這么多也不知道對你有沒有幫助呢?
    posted @ 2005-11-17 09:34 安德爾斯 閱讀(323) | 評論 (2)編輯 收藏
    1.關于參數的傳遞
    class ValHold{
    public int i = 10;
    }
    public class ObParm{
    public void amethod(){
    ValHold v = new ValHold();
    another(v);
    System.out.println(v.i);
    }
    public void another(ValHold v){
    v.i = 20;
    ValHold vh = new ValHold();
    v =vh;
    System.out.println(v.i);
    }
    public static void main(String[] argv){
    ObParm o = new ObParm();
    o.amethod();
    }
    }
    此題的答案是10,20,為什么不是10,10呢?
    這樣解釋吧,按照sun官方的說法:當一個引用變量作為參數傳遞給一個方法時, 在這個方法內可以改變變量的值,即改變引用指向的對象,(本題中將vh賦給v)但是方法的調用結束后,改變量恢復原來的值,即變量仍然指向原來的對象。 (即another(v)調用結束之后,v又回復到第一次ValHold v = new ValHold();時指向的地址空間。) 但是如果在方法內改變了引用指向的對象的數據(屬性),那么當方法的調用結束后,盡管引用仍然指向原來的對象,這個對象的某個屬性已經被改變了(v的i值在 執行v.i=20的時候就已經被改變了,所以調用another結束后,v.i已經變成了20) .
    2.關于內部類
    public class InOut{
    String s= new String("Between");
    public void amethod(final int iArgs) {
    int iam;
    class Bicycle{
    Bicycle() {
    System.out.println(s); //這兩句話可以,也就是說可以訪問s
    System.out.println(iArgs); //和final int 常量
    //System.out.println(iOther);
    }
    }
    new Bicycle();
    }
    public void another(){
    int iOther;
    }
    public static void main(String[] args) {
    InOut inout= new InOut();
    inout.amethod(22);
    }
    }
    Inner class能夠存取外部類的所有實例變量----無論這些實例變量有什么樣的存取控制符(比如private),就像類中的方法能夠存取方法所在類的所有變量一樣;如果inner class定義在方法中,則inner class能夠存取方法所在的類中的實例變量,也能存取該方法中的局部變量,但該局部變量必須是final的,也就是只能訪問方法中的常量.(上面所說的都是普通內部類,不是靜態內部類的情況).
    public class Testinner {
    int t=10;
    public void a() {
    final int u =90;
    class InMethod { //方法中內部類
    InMethod() { //內部類的構造方法
    System.out.println("u="+u); //封裝方法內的變量必須是final才能訪問到!
    System.out.println("t="+t); //外部類的變量可以任意訪問!
    }
    }
    new InMethod();//必須在方法a()中創建內部類對象之后,Testinner對象才能通過 a()訪問到InMethod類
    }
    public static void main (String[] args) {
    Testinner t= new Testinner();
    t.a();
    }
    }
    輸出:u=90 ,t=10
    方法中的內部類不可以是static的!如果一個內部類是靜態的(當然只能是類中的內部類啦),那么這個類就自動的成為頂級(top-level)類即普通的類。靜態內部類中的方法(無論是靜態的方法還是非靜態的方法)只能直接訪問外部類中的靜態成員,要訪問外部類中的非靜態成員,則必須創建外部類的對象。
    posted @ 2005-11-17 09:33 安德爾斯 閱讀(209) | 評論 (0)編輯 收藏
    僅列出標題
    共2頁: 上一頁 1 2 
    主站蜘蛛池模板: 24小时在线免费视频| 国产在线精品一区免费香蕉| 波多野结衣中文字幕免费视频 | 91在线视频免费观看| 亚洲熟妇少妇任你躁在线观看无码| 亚洲中文字幕无码爆乳| 毛片基地免费观看| 久久综合久久综合亚洲| 天天拍拍天天爽免费视频| 亚洲欧洲无卡二区视頻| 四虎影视在线永久免费看黄| 在线观看亚洲网站| 亚洲综合久久夜AV | 99re6在线精品免费观看| 久久精品国产亚洲AV麻豆王友容| 免费成人在线电影| 亚洲成人午夜电影| 免费网站看v片在线香蕉| 无码色偷偷亚洲国内自拍| 亚洲一区二区高清| 国产成人无码区免费网站| 亚洲精品影院久久久久久| 猫咪社区免费资源在线观看| 国产精品无码亚洲一区二区三区| 亚洲XX00视频| 四虎影视成人永久免费观看视频| 亚洲精品国产成人中文| 午夜色a大片在线观看免费| 日韩精品无码永久免费网站| 亚洲成色www久久网站夜月| 成人午夜免费福利视频| 精品亚洲福利一区二区| 国产AV无码专区亚洲Av| 青青视频观看免费99| 污污的视频在线免费观看| 亚洲91av视频| 日韩毛片免费在线观看| 国产一精品一av一免费爽爽| 2017亚洲男人天堂一| 综合亚洲伊人午夜网| 日韩精品无码区免费专区|