AWS Graviton2上資料壓縮演算法效能比較
阿新 • • 發佈:2022-03-07
內部類:在一個類的內部在定義一個完整的類。(套娃dog)
特點:
- 編譯之後可生成獨立的位元組碼檔案。
- 內部類可直接訪問外部類的私有屬性,而不破壞封裝。
- 可為外部類提供必要的功能元件。
內部類分為:成員內部類、靜態內部類、區域性內部類和匿名內部類。
成員內部類:在類的內部定義,與實列變數,例項方法同級別的類。
外部類的一個例項部分,建立內部類物件時,必須依賴外部類物件。
當外部類與內部類屬性重名時,優先訪問內部類屬性。
內部類裡面不能包含靜態成員,但可以包含靜態常量
建立物件方式以及重名時如何呼叫外部類方式如下:
Outer outer = newOuter(); Outer.Inner inner = outer.new Inner(); public class Outer { private int id = 110; private String name = "張三"; public void out(){ System.out.println("外部類的方法"); } public class Inner{ private int id = 120; private String name = "李四";public void in(){ System.out.println("內部類的方法"); } //獲得外部類的私有屬性 public void getid(){ System.out.println(id); } //當外部內於內部類重名時,優先獲取內部類的資訊。 public void show(){ System.out.println(name); System.out.println(Outer.this.name);//獲取外部類資訊。 } } }
靜態內部類:不依賴外部類物件,可直接建立或通過類名訪問,可宣告靜態成員
Outer.Inner inner = new Outer.Inner();
public class Outer { private String name = "張三"; private int age = 18; //靜態內部類和外部類同級 static class Inner{ private String address = "江西";private static int count = 19; public void show(){ //訪問外部類屬性 Outer outer = new Outer(); System.out.println(outer.name); //呼叫靜態內部類的屬性 System.out.println(Inner.count);//Inner可以不加 } } }
區域性內部類:定義在外部類的方法之中,作用範圍和建立物件範圍僅限於當前方法
//區域性內部類 public class Outer { private int phone = 1327783241; public void show1(){ //定義區域性變數 String name = "桐人"; class Inner{//與方法同級 private String address = "刀劍神域"; public void show2(){ //訪問外部類屬性 System.out.println(phone); //或者這樣訪問System.out.println(Outer.this.phone); System.out.println(this.address);//或address //訪問區域性變數,jdk1.7要求變數必須是常量final,jdk1.8之後final可省略 自動新增 System.out.println(name); } } //建立區域性內部類物件 Inner inner = new Inner(); inner.show2();
//然後在main方法中定義Outer的物件 通過物件呼叫內部類所在的方法就可以啦 } }
匿名內部類:沒有類名的區域性內部類(一切特徵都與區域性內部類相同)
必須繼承一個父類或者實現一個介面。
//在Usb介面中宣告一個service();方法 public class TestUsb { public static void main(String[] args) { //匿名內部類(相當於建立了一個區域性內部類) Usb usb = new Usb(){ @Override public void service() { System.out.println("鍵盤連結成功,開始工作。。。"); } }; usb.service(); } }