java基础--静态内部类和局部内部类

本文详细解析了静态内部类与局部内部类的区别与特性。静态内部类不依赖于外部类实例,并能访问外部类的静态成员;局部内部类则只能在其定义的方法内使用,且不允许静态成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态内部类的特点:

1 静态内部类的实例不会自动持有外部类的特定实例的引用。在创建内部类的实例时,不必创建外部类的实例。

 

class A {
	public static class B {
		int v;
	}
}

public class TestStaticInner {

	public static void main(String[] args) {
		A.B b = new A.B();
		System.out.println(b.v);
	}
}

 

 

2 静态内部类可以直接访问外部类的静态成员,若访问实例成员,就必须通过外部类的实例去访问。

3 在静态内部类中可以定义静态成员和实例成员。

 

class A {
    private int a1=12;

    private static int a2=2;

    public void test(){}

    public static class B {

       //int b1=a1;//不能直接访问外部类的成员变量
       int b2=a2;
       int v;
       int b3=new A().a1;//实例去访问
       static String name="test";
       public void test(){}
       static void methodB()
       {
           System.out.println(new A().a1);
       }

       public void methodC()
       {
           this.test();
           new A().test();
       }
    }
}  

 

 

4 客户类可以通过完整的类名直接访问静态内部类的静态成员。但是不能通过完整类名访问静态方法,因为静态方法可能访问外部类的实例实例变量和方法。

System.out.println("直接通过完整类名访问静态成员变量:"+A.B.name);

//System.out.println("直接通过完整类名访问静态成员:"+A.B.methodB());

 

局部内部类:

局部内部类是在一个方法中定义的,和局部变量一样,局部内部类不能用控制修饰符public private protected static修饰符来修饰。特点

1 局部内部类只能在当前方法中使用。

2 局部内部类和实例内部类一样,不能包含静态成员。

3 在局部内部类中定义的类不能加访问修饰符。如public private

class A {
	// B b =new B();不能访问局部内部类只能在当前方法中使用。
	public void mathod() {
		class B {
			// static String name; 不能包含静态成员变量 ,再次强调可以包含静态常量
			// static class D{}//编译错误 static不能修饰内部类,可以用 abstract 和final修饰
			// 但是不能同时使用,局部类也不能加访问修饰符
			int v1, v2;

			class C {
				int v3;
			}
		}

		B b = new B();// ok
		System.out.println(b.v1);
		B.C c = b.new C();// ok
	}

	final int localA = 32;// 定义常量
	int a;

	public void m2(final int p1, int p2) {
		int localV1 = 21;
		final int localB = 23;// 定义常量
		class B {

			final static int V = 3;
			// int localV= localV1;
			int b1 = a;
			int b2 = p1;
			// int b3=p2;//不能访问非常量
			int b5 = localB;
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值