day 10-Javaオブジェクト向け(パッケージ/内部クラス/匿名クラス)

6011 ワード

10.01_オブジェクト向け(packageキーワードの概要と役割)(理解)
  • A:どうしてかばんがあるの?
  • バイトコード(.class)を分類格納
  • パッケージは実はフォルダ
  • です.
  • B:パッケージのフォーマットを定義する
  • packageパッケージ名;
  • 多段包用(英語のカンマ)分かれば
  • package com.baidu;
    
    // A:package                 
    // B:package     java        
    // C:    package,       
        
    class TestJava {
    }
    

    10.03_オブジェクト向け(パッケージ付きクラスコンパイルと実行)(把握)
    //   
    javac -d . TestJava.java
    
    //       
    java com.baidu.TestJava
    ```
    
    ###10.05_    (import         )(  )
    * A:    
        *      import
            *                ,        
    * B:    
        * import   ;
        *             。
        *        *,     。
    
    ```Java
    //    import   
    com.houwan.Person p = new com.houwan.Person("Hou",24);
    System.out.println(p.getName()+"--->"+p.getAge());
    
    //   import  
    import com.houwan.Person;
    
    Person p = Person("Hou",24);
    
    //    class /  import  / package       
    package(    ) --> import(    ) --> class
    ```
    
    ###10.06_    (          )(  )
    
    |             |      |       (  +   )   |      (  ) |     (   ) |
    | :--------:  | :--------:     | :--------:   | :--------: | :--------: |
    | `private`     | Y |  | | |
    |           | Y | Y| | |
    | `protected`   | Y | Y|Y| |
    | `public`      | Y | Y | Y | Y |
    
    
    ###10.07_    (              )(  )
    * A:   :
        *      :`private`,   ,`protected`,`public`
        *      :`static`,`final`
        *      :`abstract`
    * B: :
        *      :     ,`public`
        *      :`final`
        *      :`abstract`
        
        *        :`public`
        
    * C:    :
        *      :`private`,   ,`protected`,`public`
        *      :`static`,`final`
        
        *        :`private`
        
    * D:    :
        *      :`private`,   ,`protected`,`public`
        
        *        :`public`
        
    * E:    :
        *      :`private`,   ,`protected`,`public`
        *      :`static`,`final`
        *      :`abstract`
        
        *        :`public`
        
    * F:         :
        *     :`public static final`
        *     :
            * `public static` 
            * `public abstract`
            * `public final`
    
    ###10.08_    (          )(  )
    * A:     
    * B:       
        * a:               ,    。
        * b:            ,      。
        *     .         =      .     ;
    
    ```Java
    class Outer {  //   
        private int num = 10 ;
        
        class Inner { //   
            public void method() {
                System.out.println("     ,           .."+num);
            }
        }
    }
    
    //     
    Outer.Inner oi = new Outer().new Inner();
    oi.method();
    ```
        
    ###10.09_    (         )(  )
    
     ```Java
    class Outer { //   
        private class Inner { //     
            public void method() {
                System.out.println("     ,           ..");
            }
        }
    
        //     ,       
        public void print() {
            Inner in = new Inner();
            in.method();
        }
    }
    ```
    ###10.10_    (       )(  )
    
    ```Java
    class Outer { //   
        static class Inner { //     
            public void method() {
                System.out.println("       ");
            }
        }
    }
    
    //     
    //     :     .         =     .     ;
    Outer.Inner oi = new Outer.Inner();
    oi.method();
    
    ```
    
    
    ###10.11_    (         )(  )
    
     ```Java
    //   :       ,      30,20,10。
    class Outer {
        public int num = 10;
        class Inner {
            public int num = 20;
            public void show() {
                int num = 30;
                System.out.println(???);  // num
                System.out.println(???);  // this.num
                System.out.println(???);  // Outer.this.num
            }
        }
    }
    
    //     :
    new Outer().new Inner().show();
    
    //                 ,        
    //        :     .this
    
    ```
    
    ###10.12_    (              )(  )
    
    *               `final`  
    *                       `final`  ,   ?
        -           ,         `final`  ,                  ,
        -      ,          ,                          ,
        -     ,   `final`               ,      ,        ,       
    *   jdk1.8       ,        bug
    
    ```Java
    class Outer { //   
        
        public void method() {
           final int num = 10 ;
    
            class Inner { //     
                public void print() {
                    System.out.println("       .." + num);
                }
            }
            
            Inner in = new Inner();
            in.print();
        }
    }
    ```
    ###10.13_    (           )
    * A:     
        *           。
    * B:  :         
        *        **   **    **   **。
    * C:  :
    * 
            new        (){
                    ;
            }
    * D:      ?
        *                        。
    
    ```Java
    interface Protocol {
        public abstract void print();
    }
    
    class Outer {
        class Inner implements Protocol {
            public void print() {
                System.out.println("         ");
            }
        }
    
        //              
        public void method() {
            new Protocol()  {  //   Protocol  ,         ,         ,      
                public void print() {
                    System.out.println("       ");
                }
            }.print(); //        
        }
    }
    ```
    
    ###10.15_    (            )
    
    * A:    
    * 
            //      ,    
            abstract class Person {
                public abstract void show();
            }
        
            class PersonDemo {
                public void method(Person p) {
                    p.show();
                }
            }
        
            class PersonTest {
                public static void main(String[] args) {
                    //    PersonDemo  method   ?
                    PersonDemo pd = new PersonDemo ();
                    
                }
            }
    
    ###10.16_    (         )
    
    ```Java
    //         ”HelloWorld”
    interface Inter { void show(); }
    class Outer { //     }
    class OuterDemo {
        public static void main(String[] args) {
            Outer.method().show(); //    ,      ,      
        }
    }
    
    //    :interface        public abstract  ,   ,    public,    
    //    :   .   (),          ,    public static   
    //   :
    class Outer { 
        //     
        public static Inter method() {
            return new Inter(){
                        public void show() {
                            System.out.println("xxoo");
                        }
                    };
        }
    }
    ```
    
    *END。*
    *     。*
    *       ,      ,          。*
    *           ,        。*
    *      ,        。*