您当前的位置: 首页 >  Java

梁同学与Android

暂无认证

  • 4浏览

    0关注

    618博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java 静态内部类与非静态内部类【复习】

梁同学与Android 发布时间:2022-01-02 17:15:54 ,浏览量:4

一、静态内部类与非静态内部类的区别

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();
		
	}
}
关注
打赏
1660730345
查看更多评论
立即登录/注册

微信扫码登录

0.1524s