Java 內部類、eclipse、包

內部類

一、定義在內部的類就是內部類eclipse

二、根據定義的位置不一樣分爲:成員內部類和局部內部類ide

三、成員內部類分爲普通成員內部類、私有成員內部類和靜態成員內部類spa

四、局部內部類:有名字的內部類和匿名內部類3d

成員內部類

一、普通成員內部類code

  一、定義在成員位置上的類對象

    定義格式 class 內部類名{ 內部成員}blog

  二、成員內部類說明繼承

    1.內部類能夠直接訪問外部類的全部成員,包括私有成員。
    2.外部類訪問內部類的成員,必須建立內部類的對象。
    3.在外部其它類,訪問內部類成員也要建立內部類對象。接口

  建立內部類對象    外部類名.內部類名 內部類對象名 = new 外部類名().new 內部類名();ip

二、私有成員內部類

  一、在成員類前加上private

  二、訪問說明:

    1.在外部其它類之外,不能直接訪問外部類中的私有成員內部類。
    2.能夠在外部類中,定義一個訪問私有成員內部類的公有方法(也就是在外部類方法中建立內部類的對象),讓外界                調用公有方法達到間接調用私有成員內部類的目的。

三、靜態成員內部類

  一、用static關鍵字修飾的內部類

  二、訪問特色:

    1.成員內部類是外部類的靜態成員,因此能夠通外部類名.內部類名方式直接訪問,而不須要建立外部類的對象。
    2.靜態內部類的非靜態成員,須要將所在的內部類對象建立出來以後,才能被調用。
    3.總結:一個類是否須要建立對象,不取決於該類自己是不是靜態,而取決於訪問的成員是不是靜態。
    4.外部類名.內部類名 對象名 = new 外部類名.內部類名();

public class Demo01 {

    public static void main(String[] args) {
        Animal.Dog.show();
    }
}

class Animal{
    
    private static int age = 10;
    
    public void eat() {
        System.out.println("eating");
    }
    
    static class Dog{
        static String name = "ahuang";
        public static void show() {
            System.out.println("名字是:"+name+"年齡是:"+age);
        }
    }
}
靜態內部類的訪問特色

局部內部類

一、定義在方法中的內部類

二、訪問說明:

  方法中的局部變量,外界都沒有辦法訪問到,因此方法中定義的內部類,外界也沒有辦法訪問到。
  解決辦法:在方法內部,就建立局部內部類的對象,調用對象的方法。

class Demo04_局部內部類 {
    public static void main(String[] args) {
        //經過調用breath方法,間接的訪問局部內部類中的show方法
        breath();
    }
    public static void breath() {
        int f = 30;
        class Fei {
            String color = "black";
            public void show() {
                System.out.println(f + "..." + color + "...");
            }
        }
        //建立局部內部類對象
        Fei fei = new Fei();
        //調用局部內部類方法
        fei.show();
    }
}
局部內部類的訪問特色

匿名內部類

一、沒有名字的內部類

二、使用前提:繼承一個類或實現一個接口

三、本質:子類的對象

四、在寫匿名內部類時,裏面的方法儘可能少於3個

public class Demo02 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Dog() {
            public void eat() {
                System.out.println("eating");
            }
            public void mun() {    
            }    
        }.eat();//其實就是子類的定義加上實現成對象加上調用eat()方法
    }
}
interface MyInter{
    void eat();
}
interface MyInter2{
    void mun();
}
class Animal1{
    public void run() {
        System.out.println("runing");
    }
}
abstract class Dog extends Animal1 implements MyInter,MyInter2{

}
匿名內部類訪問特色

eclipse

一、快捷鍵   alt + /內容輔助

  一、ctrl + n:新建工程、包、類和文件等內容

  二、Ctrl + shift + f:格式化代碼

  三、Ctrl + shift + o:自動導包、刪除沒有用的包

  四、Ctrl + /:單行註釋,取消單行註釋

  五、Ctrl + shift + / :多行註釋

  六、Ctrl + shift + \ :取消多行註釋

  七、Alt + ↑:向上移動一行

  八、Alt + ↓:向下移動一行

  九、Ctrl + alt + ↑:向上複製一行

  十、Ctrl + alt + ↓ :向下複製一行

  十一、Ctrl + d:刪除一整行

  十二、Alt + shift + r:總體修改某個標識符名稱

  1三、F2:能夠修改文件名稱,而且將全部關聯的位置一塊兒修改

二、alt+shift+s 快速生成getter和Setter()方法、構造方法

三、ctrl +2 +l 快速命名

一、包:用於分類存放類文件(.class)的文件夾

二、做用:

  一、分類存放類文件

  二、在不一樣的包中,能夠起相同的類名(能夠根據包名區分)

三、命名:

  域名倒着寫:com.ujiuye.demos(全球惟一)

四、包的聲明:

  使用package的關鍵字,聲明當前的類是屬於指定的包的

五、效果:

  一、編譯的這個類,就會進入到一個指定的文件夾中

  二、當前的類,名稱也發生了變化,類名變成了【包名 + 類名】

六、運行:

  一、包文件夾之外,沒法直接訪問到這個類了

  二、進入到包文件夾中,仍然沒法訪問到這個類:不管寫類名仍是全類名都沒法找到這個類

  三、【解決】在包文件夾所在的目錄,運行這個類的全類名

七、訪問:

  在其餘類中訪問帶包的類的時候,須要使用那個類的全類名:包名+類名

八、簡化:

  每次使用其餘包的類的時候,都須要寫很長一串全類名,因此很是麻煩,須要簡化

  使用import語句進行簡化,在類的聲明上,寫一個import語句,將這個類的全類名導入進來,在該類中,就能夠直接使用這個類的簡寫形式了。

  注意事項:

  一、即便在一個包中,有好多類都要使用,也不建議使用import *

  二、若是在一個文件中,須要使用兩個包中的同名類,那麼不建議用import語句導包

     不然沒法區分使用的是哪一個包中的類

九、權限修飾符

  一、就是一些關鍵字,修飾成員,用於決定這些成員能夠在什麼位置被訪問

  二、這些關鍵字都是「封裝」的體現形式

  三、權限修飾符:

      private 只能在本類中被訪問

      默認的權限修飾符(啥都不寫): 能夠在本類中被訪問,也能夠在本包中的其餘類中 被訪問

      protected 能夠在本類中被訪問,也能夠在本包中的其餘類中被訪問,能夠在其餘包的子類中被【繼承】

      public : 能在本類中被訪問,能在本包中的其餘類中被訪問,能在其餘包中的子類中被訪問

                    能在其餘包的無關類中被訪問

相關文章
相關標籤/搜索