生活随笔
收集整理的這篇文章主要介紹了
Java 静态内部类与非静态内部类【复习】
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、靜態(tài)內(nèi)部類與非靜態(tài)內(nèi)部類的區(qū)別
1.靜態(tài)內(nèi)部類只能訪問外部類的靜態(tài)成員和方法
2.靜態(tài)內(nèi)部類不能訪問外部類的非靜態(tài)成員變量和非靜態(tài)方法。他只
能訪問外部類的靜態(tài)成員和靜態(tài)方法,非靜態(tài)內(nèi)部類能夠訪問外部類的靜
態(tài)和非靜態(tài)成員和方法
3.靜態(tài)內(nèi)部類不依賴外部類實(shí)例而被實(shí)例化,但非靜態(tài)內(nèi)部類需要在外部類實(shí)例化后才可以被實(shí)例化
4.靜態(tài)內(nèi)部類不需要持有外部類的引用,但非靜態(tài)內(nèi)部類需要持有外部類的引用
/** * @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";// 靜態(tài)內(nèi)部類public static
class StaticInnerClass {// 靜態(tài)內(nèi)部類只能訪問外部類的靜態(tài)成員public void printMessage
() {// 試著將 msg 改成非靜態(tài)的,這將導(dǎo)致編譯錯(cuò)誤 System
.out
.println
("Message from inner static class: " + msg
); }}// 非靜態(tài)內(nèi)部類public
class InnerClass {// 不管是靜態(tài)方法還是非靜態(tài)方法都可以在非靜態(tài)內(nèi)部類中訪問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
[]) {// 創(chuàng)建靜態(tài)內(nèi)部類的實(shí)例StaticInnerClass printer
= new StaticInnerClass
();// 靜態(tài)內(nèi)部類只能訪問外部類的靜態(tài)成員和靜態(tài)方法printer
.printMessage
();// 創(chuàng)建非靜態(tài)內(nèi)部類InnerClass inner
= new OuterClass
().new InnerClass
();// 非靜態(tài)內(nèi)部類不管是靜態(tài)方法還是非靜態(tài)方法都可以在非靜態(tài)內(nèi)部類中訪問inner
.display
();}
}
總結(jié)
以上是生活随笔為你收集整理的Java 静态内部类与非静态内部类【复习】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。