java内部类的相关总结

内部类,故名思议,定义在一个类中的另一类。
面向对象程序设计中,可以在一个类的内部定义另一个类。嵌套类分为两种,即静态嵌套类和非静态嵌套类。
静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。

一定义内部类

class Outer{
	int x=3;
	class Inner{ //内部类
		int x=4
		void function(){
			int x=6
			System.out.println("内部类方法调用x的值"+x);
		}
	}
	void method(){
		System.out.println("外部类方法");
	}
}

二内部类访问规则

	 1. 内部类可以直接访问外部类的成员,不需要再实例化外部类,包括私有
	 
	 2. 外部类要访问内部类必须要建立内部类对象(私有内部类也可以通过new来实例化,
	 它就相当于外部类的一个成员变量)
	 例如:Outer.Inner in=new Outer().new Inner();
	 
	3.内部类方法中调用x的值结果:
		x=6
		this.x=4
		Outer.this.x=3
	内部类之所以直接访问外部类的成员,是因为内部类中持有了外部类的引用,格式:外部类名.this

静态内部类

  1.当内部类被static修饰时就具备了static特性,只能访问外部类的static成员变量
  原因:在类的加载过程中会先初始化静态变量,非静态变量要根据随着对象的产生而初始化,
  所以,静态变量只能访问静态变量。此时非静态变量还未分配内存空间,不能进行访问。
  (静态变量属于类变量,随着类的加载而加载,随着类的消失而消失,实例变量属于成员变量,
  只有产生了对象,才会初始化成员变量,它随着对象的产生而产生,随着对象的消失而消失)
  
  2.当内部类中定义了静态成员,该内部类必须是static(内部类方法如果是static,则该内部类必须是static)

匿名内部类
原则:必须继承或者实现一个其他父类或接口
其实是内部类的简写格式,只是没有具体的名字,没有办法通过声明类名的方式进行实例化,所以在定义匿名内部类的时候,
就必须把父类的方法或者接口的方法进行重写或实现。也可用在方法的参数当中

//抽象类
abstract AbsDemo{
	void show();
}

class Outer{
	int x=3;
	public void function(){
		new AbsDemo(){
			void show(){
				System.out.println("x===="+x);
			}
		}.show(); //重写完方法后,再进行调用
	}
}

以上是关于java内部类的相关知识点,主要从普通内部类,静态内部类和匿名内部类三个部分进行总结。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值