java中的包以及內部類的介紹

來源:互聯網
上載者:User

標籤:

1:形式參數和傳回值的問題(理解)
    (1)形式參數:
        類名:需要該類的對象
        抽象類別名:需要該類的子類對象
        介面名:需要該介面的實作類別對象
    (2)傳回值類型:
        類名:返回的是該類的對象
        抽象類別名:返回的是該類的子類對象
        介面名:返回的是該介面的實作類別的對象
    (3)鏈式編程
        對象.方法1().方法2().......方法n();
        
        這種用法:其實在方法1()調用完畢後,應該一個對象;
                  方法2()調用完畢後,應該返回一個對象。
                  方法n()調用完畢後,可能是對象,也可以不是對象。

2:包(理解)
    (1)其實就是檔案夾
    (2)作用:
        A:區分同名的類
        B:對類進行分類管理
            a:按照功能分
            b:按照模組分
    (3)包的定義(掌握)
        package 包名;
        
        多級包用.分開。
    (4)注意事項:(掌握)
        A:package語句必須在檔案中的第一條有效語句
        B:在一個java檔案中,只能有一個package
        C:如果沒有package,預設就是無包名
    (5)帶包的編譯和運行
        A:手動式
        B:自動式(掌握)
            javac -d . HelloWorld.java
            
3:導包(掌握)
    (1)我們多次使用一個帶包的類,非常的麻煩,這個時候,Java就提供了一個關鍵字import。
    (2)格式:
        import 包名...類名;
        另一種:
            import 包名...*;(不建議)
    (3)package,import,class的順序
        package > import > class
    
4:許可權修飾符(掌握)
    (1)許可權修飾符
                    本類    同一個包下    不同包下的子類    不同包下的無關類
        private        Y
        預設        Y        Y
        protected    Y        Y            Y
        public        Y        Y            Y                Y
    (2)這四種許可權修飾符在任意時刻只能出現一種。
        public class Demo {}        

5:常見的修飾符(理解)
    (1)分類:
        許可權修飾符:private,預設,protected,public
        狀態修飾符:static,final
        抽象修飾符:abstract
    (2)常見的類及其組成的修飾
        類:
            預設,public,final,abstract
            
            常用的:public
        
        成員變數:
            private,預設,protected,public,static,final
            
            常用的:private
            
        構造方法:
            private,預設,protected,public
            
            常用的:public
        
        成員方法:
            private,預設,protected,public,static,final,abstract
            
            常用的:public
    (3)另外比較常見的:
        public static final int X = 10;
        public static void show() {}
        public final void show() {}
        public abstract void show();

6:內部類(理解)
    (1)把類定義在另一個類的內部,該類就被稱為內部類。
        舉例:把類B定義在類A中,類B就被稱為內部類。
    (2)內部類的訪問規則
        A:可以直接存取外部類的成員,包括私人
        B:外部類要想訪問內部類成員,必須建立對象
    (3)內部類的分類
        A:成員內部類
        B:局部內部類
    (4)成員內部類
        A:private 為了資料的安全性
        B:static 為了訪問的方便性
        
        成員內部類不是靜態:
            外部類名.內部類名 對象名 = new 外部類名.new 內部類名();
        成員內部類是靜態:
            外部類名.內部類名 對象名 = new 外部類名.內部類名();
    (5)成員內部類的面試題(填空)
        30,20,10
        
        class Outer {
            public int num = 10;
            
            class Inner {
                public int num = 20;
                
                public viod show() {
                    int num  = 30;
                    
                    System.out.println(num);
                    System.out.println(this.num);
                    System.out.println(Outer.this.num);
                }
            }
        }
    (6)局部內部類
        A:局部內部類訪問局部變數必須加final修飾。
        B:為什麼呢?
            因為局部變數使用完畢就消失,而堆記憶體的資料並不會立即消失。
            所以,堆記憶體還是用該變數,而改變數已經沒有了。
            為了讓該值還存在,就加final修飾。
            通過反編譯工具我們看到了,加入final後,堆記憶體直接儲存的是值,而不是變數名。
    (7)匿名內部類(掌握)
        A:是局部內部類的簡化形式
        B:前提
            存在一個類或者介面
        C:格式:
            new 類名或者介面名() {
                重寫方法;
            }
        D:本質:
            其實是繼承該類或者實現介面的子類匿名對象
    (8)匿名內部類在開發中的使用
        我們在開發的時候,會看到抽象類別,或者介面作為參數。
        而這個時候,我們知道實際需要的是一個子類對象。
        如果該方法僅僅調用一次,我們就可以使用匿名內部類的格式簡化。
        
        interface Person {
            public abstract void study();
        }
        
        class PersonDemo {
            public void method(Person p) {
                p.study();
            }
        }
        
        class PersonTest {
            public static void main(String[] args) {
                PersonDemo pd = new PersonDemo();
                pd.method(new Person() {
                    public void study() {
                        System.out.println("好好學習,天天向上");
                    }
                });
            }
        }
        
    (9)匿名內部類的面試題(補齊代碼)
        interface Inter {
            void show();
        }
        
        class Outer {
            //補齊代碼
            public static Inter method() {
                return new Inter() {
                    public void show() {
                        System.out.println("HelloWorld");
                    }    
                };
            }
        }
        
        class OuterDemo {
            public static void main(String[] args) {
                Outer.method().show(); //"HelloWorld"
            }
        }

java中的包以及內部類的介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.