生活随笔
收集整理的这篇文章主要介绍了
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 静态内部类与非静态内部类【复习】的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。