栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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();
		
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/695284.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号