.精華筆記:
1)成員內部類: 應用率不高
1.1)類中套類,外面的稱為外部類,里面的稱為內部類
1.2)內部類通常只服務于外部類,對外不具備可見性
1.3)內部類物件通常在外部類中創建
1.4)內部類中可以直接訪問外部類的成員(包括私有的)
內部類中有一個隱式的參考,指向了創建它的外部類物件
---外部類名.this---------------要記住(傳奇老師那用)
2)匿名內部類:----------大大簡化代碼的操作
2.1)若想創建一個類(派生類)的物件,并且物件只被創建一次,
此時可以設計為匿名內部類
2.2)在匿名內部類中不能修飾外面區域變數的值,
因為該變數在此處會默認為final的----------記住它(傳奇才師那用)
2.3)問:內部類有獨立的.class嗎?
答:有
一.筆記:
1)成員內部類: 應用率不高
1.1)類中套類,外面的稱為外部類,里面的稱為內部類
1.2)內部類通常只服務于外部類,對外不具備可見性
1.3)內部類物件通常在外部類中創建
1.4)內部類中可以直接訪問外部類的成員(包括私有的)
內部類中有一個隱式的參考,指向了創建它的外部類物件
---外部類名.this---------------要記住(傳奇老師那用)
```java
public class InnerClassDemo {
public static void main(String[] args) {
Mama m = new Mama();
//Baby b = new Baby(); //編譯錯誤,內部類對外不具備可見性
}
}
class Mama{ //外部類
private String name;
void create(){
Baby b = new Baby();
}
class Baby{ //內部類
void showName(){
System.out.println(name); //簡便寫法
System.out.println(Mama.this.name); //完整寫法
//System.out.println(this.name); //編譯錯誤,this指代當前Baby物件
}
}
}
```
2)匿名內部類:----------大大簡化代碼的操作
2.1)若想創建一個類(派生類)的物件,并且物件只被創建一次,
此時可以設計為匿名內部類
2.2)在匿名內部類中不能修飾外面區域變數的值,
因為該變數在此處會默認為final的----------記住它(傳奇才師那用)
2.3)問:內部類有獨立的.class嗎?
答:有
```java
public class NstInnerClassDemo {
public static void main(String[] args) {
//1)系統自動創建了Aoo的一個派生類,但是沒有名字
//2)為該派生類創建了一個物件,名為o1
// ---new Aoo(){}是在創建Aoo的派生類的物件
//3)大括號中的為派生類的類體
Aoo o1 = new Aoo(){
};
//1)系統自動創建了Aoo的一個派生類,但是沒有名字
//2)為該派生類創建了一個物件,名為o2
//3)大括號中的為派生類的類體
Aoo o2 = new Aoo(){
};
//1)系統自動創建了Boo的一個派生類,但是沒有名字
//2)為該派生類創建了一個物件,名為o3
//3)大括號中的為派生類的類體
Boo o3 = new Boo(){
void show(){
System.out.println("showshow");
}
};
o3.show();
int num = 5;
num = 55;
Boo o4 = new Boo(){
void show(){
System.out.println("showshow");
//num = 66; //編譯錯誤,匿名內部類中不能修改外面區域變數的值,
//因為在此處該變數會默認為final的
}
};
}
}
abstract class Boo{
abstract void show();
}
abstract class Aoo{
}
```
二.補充:
1.隱式的參考:
1)this:指代當前物件
2)super:指代當前物件的超類物件
3)外部類名.this:指代當前物件的外部類物件
2.做功能的套路:
1)先寫行為/方法:
1.1)若為派生類所特有的行為,則將方法設計在特定的類中
1.2)若為所有派生類所共有的行為,則將方法設計在超類中
2)視窗呼叫:
2.1)若為定時(自動)發生的,則在定時器中呼叫
2.2)若為事件觸發的,則在偵聽器中呼叫-----------明天第1節課講
3.呼叫方法的注意事項:
1)若方法是有回傳值的,則必須宣告對應型別的變數來接收
2)呼叫時:
2.1)若與方法在同一個類中,則可以直接呼叫
2.2)若與方法不在同一個類中,則需要通過參考名打點來呼叫
2.3)若方法為靜態的,則直接通過類名打點來呼叫
4.錯誤分類:
1)編譯錯誤----都是由于違反語法規則了
2)例外--------運行時發生,找到at后的鏈接點擊
3)程式的運行結果與你所預期的結果不同------------必須得調錯
5.如何調錯:
1)------------明天講
2)打樁: System.out.println(資料);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/501324.html
標籤:其他
