java嵌套类(重点为静态成员类的说明和使用)

本文详细介绍了Java中的四种嵌套类:静态成员类、非静态成员类、匿名类和局部类。静态成员类可以独立于外围类存在,能访问外围类的所有静态成员。非静态成员类每个实例都与外围类的一个实例相关联,不能在没有外围类实例的情况下创建。匿名类用于继承父类或实现接口,常用于简洁的代码表达。局部类则定义在方法内部,使用场景有限。
摘要由CSDN通过智能技术生成

嵌套类(nested class ['nestɪd] ):被定义在另一个类的内部的类;

外围类(enclosing class)

嵌套类(nested class)有四种

  • 静态成员类(static member class)、
  • 非静态成员类(nonstatic member class)、
  • 匿名类(anonymous class) 、
  • 局部类(local class)。

除了第一种之外,其他三种都被称为内部类


1、静态成员类

    静态成员类是最简单的一种嵌套类。最好把它看作是普通的类,只是碰巧被声明在另一个类的内部而已,它可以访问外围类的所有静态成员(包括声明为私有的成员)。
    静态成员类是外围类的一个静态成员,与其他的静态成员一样,也遵守同样的可访问规则。如果它被声明为私有的,就只能在外围类的内部才可以被访问。

public class Father {
   
    private static int cc = 0;
	static class Flower{
   	
		public Flower() {
   
			System.out.println("Flower:::构造方法执行" + cc);
		} 
	}
}

    静态成员类的一种常见应用是作为公有的辅助类,当且仅当与它的外部类一起使用时才有意义。


2、非静态成员类

非静态成员类和静态成员类之间的区别:

非静态成员类的每个实例都隐含着与外围类的一个外围实例相关联。在非静态成员类的实例方法内部(实例方法:对象的方法,只有对象创建后才起作用),可以调用外围实例上的方法,或者利用修饰过的this构造获得外围实例的引用。

public class OuterClass {
   
	public OuterClass() {
   
		System.out.println("OuterClass:::构造方法执行");
	}
	public void haha() {
   
		System.out.println("OuterClass:::haha方法执行");
	}
	class InnerClass{
   
		public InnerClass() {
   
			haha();  //在非静态成员类的实例方法内部调用外围实例上的方法
			System.out.println("InnerClass:::构造方法执行");
		}
	}
	static class InnerClassStatic{
   
		public InnerClassStatic() {
   
//			haha();   //当haha()是静态方法时才不会出错
			System.out.println("InnerClassStatic:::构造方法执行");
		}
	}
}

如果 嵌套类的实例 可以在 外围类的实例 之外独立存在,这个嵌套类就必须是静态成员类;在没有外围类的实例的情况下

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值