生活随笔
收集整理的這篇文章主要介紹了
Java 静态内部类与非静态内部类【复习】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、靜態內部類與非靜態內部類的區別
1.靜態內部類只能訪問外部類的靜態成員和方法
2.靜態內部類不能訪問外部類的非靜態成員變量和非靜態方法。他只
能訪問外部類的靜態成員和靜態方法,非靜態內部類能夠訪問外部類的靜
態和非靜態成員和方法
3.靜態內部類不依賴外部類實例而被實例化,但非靜態內部類需要在外部類實例化后才可以被實例化
4.靜態內部類不需要持有外部類的引用,但非靜態內部類需要持有外部類的引用
/** * @title
: OuterClass
.java
* @package firstchapter
* @description
: TODO
* @author
: 梁樹鵬
* @date
: 2022年
1月
1日 上午
9:53:35 * @version
: V1
.0 */
public
class OuterClass {private static String msg
= "static attribute";private String msg1
= "no - static attribute";// 靜態內部類public static
class StaticInnerClass {// 靜態內部類只能訪問外部類的靜態成員public void printMessage
() {// 試著將 msg 改成非靜態的,這將導致編譯錯誤 System
.out
.println
("Message from inner static class: " + msg
); }}// 非靜態內部類public
class InnerClass {// 不管是靜態方法還是非靜態方法都可以在非靜態內部類中訪問public void display
() {System
.out
.println
("Message from non-static inner class: "+ msg
);System
.out
.println
("Message from non-static inner class: "+ msg1
);}}public static void main
(String args
[]) {// 創建靜態內部類的實例StaticInnerClass printer
= new StaticInnerClass
();// 靜態內部類只能訪問外部類的靜態成員和靜態方法printer
.printMessage
();// 創建非靜態內部類InnerClass inner
= new OuterClass
().new InnerClass
();// 非靜態內部類不管是靜態方法還是非靜態方法都可以在非靜態內部類中訪問inner
.display
();}
}
總結
以上是生活随笔為你收集整理的Java 静态内部类与非静态内部类【复习】的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。