Java之内部类

看了《Java编程思想》中对于内部类的描述,对于内部类有了更深一层的了解,在此记录一下。

所谓内部类即把一个类的定义放在另一个类中。代码如下:

public class Outer {
	public String str = "hello";
	private static int a = 1;
	class Inner{
		public void method(){
			System.out.println(str);
			System.out.println(a);
		}
	}
	static class Inner1{
		public void method(){
			System.out.println(a);
		}
	}
	public static void main(String[] args) {
		Outer out = new Outer();
		Outer.Inner in = out.new Inner();
		in.method();
		Inner1 in1 = new Inner1();
		in1.method();
	}
}

内部类的特性: 

1.内部类对象的获取必须通过外围类(嵌套类即静态内部类除外),因为内部类对象在暗中是连接在外围类之上的。

2.内部类可以访问外围类所有的元素。因为创建内部类对象的时候会秘密捕获一个指向外围类对象的引用。

3.每个内部类都可以独立的继承一个类或者实现接口,所以内部类可以解决多重继承的问题。

4.继承内部类的时候,因为内部类与外围类的暗中连接,在子类中必须初始化外围类,代码如下。

class Children extends Outer.Inner{
	Children(Outer outer) {
		outer.super();
	}
}

5.编译之后内部类会生成一个独立的class文件,命名规则:外围类的名称+$+内部类的名称,如:Outer$Inner.class

6.因为特性5,所以继承了外部类之后,是无法覆盖内部类的。

7.嵌套类(静态内部类)不能访问外围类的非静态成员。

8.内部类中不能定义static成员,除非为static final,因为分配静态变量内存是在编译内部类之前进行的。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值