内部类——成员内部类、静态内部类

20 篇文章 0 订阅

成员内部类
静态内部类
局部内部类
匿名内部类

主要:局部内部类、匿名内部类

成员内部内类

1、成员内部类可以等同看作成员变量
2、成员内部类可以直接访问外部类的静态数据,无法直接访问成员
3、成员内部类中不能有静态声明
4、成员内部类可以访问外部类所有的数据

本类内,主方法外定义的类

成员内部类InnerClass中方法m1的调用:
成员内部类中的方法必须创建成员内部类的对象来调用
//InnerClass inner = new InnerClass();
但这样无法创建成员内部类的对象,因为成员内部类的构造方法的调用必须创建外部类(OuterClass)的对象才能调用
//OuterClass oc = new OuterClass();
//InnerClass inner = oc.new InnerClass();

public class OuterClass {
		//静态变量
		private static String s1 = "A";
		//成员变量
		private String s2 = "B";
		
		//静态方法
		private static void m1(){
			System.out.println("静态方法m1执行");
		}
		
		//成员方法
		private void m2(){
			System.out.println("成员方法m2执行");
		}
		
		//成员内部类,可以用访问控制权限修饰符修饰
		 class InnerClass{
			//定义成员方法
			//public static void m3(){}//成员内部类中不能有静态声明(方法、变量)
			
			//定义成员方法
			public void m4(){//尽管是成员方法,但在静态内部类中,同样无法访问成员变量/方法
				System.out.println(s1);
				System.out.println(s2);
				m1();
				m2();
			}
		}
		
		 public static void main(String[] args){
			 //执行m4方法
			 OuterClass oc = new OuterClass();//创建外部类对象
			 InnerClass inner = oc.new InnerClass();//创建内部类对象
			 inner.m4(); 
		 }
}

静态内部类

1、静态内部类可以等同看作静态变量
2、作用:可以访问外部类中私有的数据

结论:静态内部类可以直接访问外部类的静态数据,无法直接访问成员(变量、方法)。

public class Test01 {
	//静态变量
	private static String s1 = "A";
	
	//成员变量
	private String s2 = "B";
	
	//静态方法
	private static void m1(){
		System.out.println("静态方法m1执行");
	}
	
	//成员方法
	private void m2(){
		System.out.println("成员方法m2执行");
	}
	//静态内部类,可以用访问控制权限修饰符修饰
	static class InnerClass{
		//定义静态方法
		public static void m3(){
			System.out.println(s1);
			//System.out.println(s2);//静态方法无法直接访问成员变量
			m1();
			//m2();同理不可以
		}
		
		//定义成员方法
		public void m4(){//尽管是成员方法,但在静态内部类中,同样无法访问成员变量/方法
			System.out.println(s1);
			//System.out.println(s2);
			m1();
			//m2();
		}
	}
	
	public static void main(String[] args){
		//执行m3
		Test01.InnerClass.m3();
		
		//执行m4
		InnerClass t = new Test01.InnerClass();
		t.m4();	
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值