Java的学习笔记

我对内部类这一块的知识不熟悉,因此我查了一些资料并学习做了一些笔记。
1.内部类:
内部类可以访问外部类中的所有成员方法和成员变量。原因,由外部类.this来引用外部类的变量和方法。
内部类变量:index/this.index/Middle.this.index/Outer.this.index。
访问内部类:外部类提供一个方法,返回它的内部类。
Outer outer = new Outer();
Outer.Inner inner = outer.getInnter();
Outer.Inner inner = outer.new Innter(); 建立内部类与外部类的关系。
能否直接访问内部类,看它是否可见,不可见(在外部类的外边)就通过外部类引用,如果可见(在外部类的内部,和内部类在同一层),就直接引用,例如在外部类里引用。静态中不能有非静态,包括main。因为static是在类被加载的时候就存在,而非static是实例化一个对象时才存在的。当把类写到一个方法的内部时,那么这个类的范围只能在这个方法内部去使用。
内部类可以放到:函数中,条件语句中,语句块中。不管欠套有多深,都可以随意访问外部类的成员。
把内部类定义在了一个方法当中,如果要在内部类中访问该方法的参数,或者访问该方法中的变量时,该变量必须为final的。
内部类:不只是public,default了,可把它的修饰比照方法的访问范围。
内部类也可以定义为抽象类。
静态的内部类只能访问外部类的静态成员变量和成员方法。
静态内部类:能够有静态的声明。
非静态内部类:不能够有静态的声明。为什么?解释:非静态的内部类说明需要实例化后才能用,而内部类中的变量却是静态的,即加载类的时候加载,之间矛盾。
只有顶层类或static的内部类中才可以声明static成员。
如果外部类要访问内部类的成员,要先实例化一个内部类的对象,通过对象去访问内部类的成员。
2.内部类更多用法:
内部类实现接口,并将内部类定义为private,这样可以隐藏实现细节。让用户只能通过接口去访问。
内部类应用:
当一个类继承了一个类并且实现了一个接口,但是实现的接口中的方法和继承的类中的方法同名,为了避免,使用内部类去实现这个接口。

原文地址:https://www.cnblogs.com/Mrsli/p/5271668.html