java 類的成員之五 內部類
阿新 • • 發佈:2018-11-05
java 類的成員之五 內部類
1. *類的第五個成員:內部類
-
相當於說,我們可以在類的內部再定義類,外面的類:外部類,裡面的類:內部類
-
內部類的分類:成員內部類(宣告在類內部且在方法外的) VS 區域性內部類(宣告在類的方法裡)
-
成員內部類:
3.1是外部類的一個成員:①可以有修飾符(四個)②static final ③可以呼叫外部類的屬性、方法3.2具有類的特點:①abstract②還可以在其內部定義屬性、方法、構造器
-
區域性內部類:
4.1區域性內部類的使用 -
要點掌握:
①如何建立成員內部類的物件(如:如建立Bird類和Dog類的物件)
②如何區分呼叫外部類、內部類的變數(尤其是變數重名的時候)
public class TestInnerClass { public static void main(String[] args) { //建立靜態內部類的物件:可以直接通過外部類呼叫靜態內部類的構造器 Person.Dog dog = new Person.Dog(); // Person.Bird b = new Person.Bird(); //建立非靜態的內部類的物件:必須先建立外部類的物件,通過外部類物件呼叫內部類的構造器 Person p = new Person(); Person.Bird b = p.new Bird(); b.info(); b.setName("黃鸝"); } } class Person{ String name = "填弟"; int age; //成員內部類非static class Bird{ String name = "杜鵑"; int id; public Bird() { } public void setName(String name) { System.out.println(name);//黃鸝 System.out.println(this.name);//杜鵑 System.out.println(Person.this.name);//填弟 } public void info() { show(); } } //成員內部類(靜態內部類) static class Dog{ } public void show() { System.out.println("我是外部類的show方法"); } public void method1() { class A{ } } }
③區域性內部類的使用
/* * 關於區域性內部類的使用 */ public class TestInnerClass1 { } class OuterClass{ //區域性內部類,如下的使用方式較少 public void mecthod1() { class InnerClass{ } } //方式一:常常使用一個方法,使其放回值為某個類或某個介面的物件,而這個類或介面在方法內建立 public Comparable getComparable() { //1.建立一個實現Comparable介面的類:區域性內部類 class MyComparable implements Comparable{ @Override public int compareTo(Object o) { // TODO Auto-generated method stub return 0; } } //2.返回一個實現類的物件 return new MyComparable(); } //方式二:實現匿名類物件的建立 public Comparable getComparable1() { //返回一個實現Comparable介面的匿名類物件 return new Comparable() { @Override public int compareTo(Object o) { // TODO Auto-generated method stub return 0; } }; } }
- 注:Thread類有內部類enum State {}表示執行緒的狀態