Java基礎學習篇---------封裝
一、Java中的內部類
1.Java中成員內部類
(1).內部類的方法可以直接訪問外部類的類中的數據,而不受訪問控制符的影響,如直接訪問 Outer 類中的私有屬性
(2)定義了成員內部類後,必須使用外部類對象來創建內部類對象,而不能直接去 new 一個內部類對象
即:內部類 對象名 = 外部類對象.new 內部類( );
(3).外部類是不能直接使用內部類的成員和方法,可先創建內部類的對象,然後通過內部類的對象來訪問其成員變量和方法。
(4).如果外部類和內部類具有相同的成員變量或方法,內部類默認訪問自己的成員變量或方法
如果要訪問外部類的成員變量,可以使用 外部類的對象.this 關鍵字
public class HelloWorld{
//外部類的私有屬性name
private String name = "imooc";
//外部類的成員屬性
int age = 20;
//成員內部類Inner
public class Inner {
String name = "愛慕課";
//內部類中的方法
public void show() {
System.out.println("外部類中的name:" + HelloWorld.this.name
System.out.println("內部類中的name:" + name); //默認為內部類成員變量
System.out.println("外部類中的age:" + age);
}
}
//測試成員內部類
public static void main(String[] args) {
//創建外部類的對象
HelloWorld o = new HelloWorld ();
//創建內部類的對象
Inner inn = o.new Inner();
//調用內部類對象的show方法
inn.show();
}
}
2.Java中靜態內部類
(1).靜態內部類不能直接訪問外部類的非靜態成員,但可以通過 new 外部類().成員 的方式訪問
(2).如果外部類的靜態成員與內部類的成員名稱相同,可通過“類名.靜態成員”訪問外部類的靜態成員
(3).創建靜態內部類的對象時,不需要外部類的對象,可以直接創建 內部類 對象名= new 內部類()
public class MyClass {
// 外部類中的靜態變量score
private static int score = 84;
private int sum = 10;
// 創建靜態內部類
public static class SInner {
// 內部類中的變量score
int score = 91;
public void show() {
System.out.println("訪問外部類中的score:" + MyClass.score);
System.out.println("訪問內部類中的sum:" + new MyClass().sum);
}
}
// 測試靜態內部類
public static void main(String[] args) {
// 直接創建內部類的對象
SInner si = new SInner();
// 調用show方法
si.show();
}
}
3.Java 中的方法內部類
由於方法內部類不能在外部類的方法以外的地方使用,因此方法內部類不能使用訪問控制符和static修飾符
public class MyClass {
private String name = "愛慕課";
// 外部類中的show方法
public void show() {
// 定義方法內部類
class MInner {
int score = 83;
public int getScore() {
return score + 10;
}
}
// 創建方法內部類的對象
MInner mi = new MInner();
// 調用內部類的方法
int newScore = mi.getScore();
System.out.println("姓名:" + name + "\n加分後的成績:" + newScore);
}
// 測試方法內部類
public static void main(String[] args) {
// 創建外部類的對象
MyClass mo = new MyClass();
// 調用外部類的方法
mo.show();
}
}
Java基礎學習篇---------封裝