一、定義在內部的類就是內部類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{ }
一、快捷鍵 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 : 能在本類中被訪問,能在本包中的其餘類中被訪問,能在其餘包中的子類中被訪問
能在其餘包的無關類中被訪問