java内部类

java内部类:1一个类定义在一个类的内部。2一个类定义在一个方法的内部。

实现方式:1成员内部类、2局部内部类、3匿名内部类、4静态内部类

(1)成员内部类(一个A类定义在一个B类的内部)



Fruite叫做外部类,Apple叫做内部类,内部类可以无条件的访问外部类的所有成员属性和成员方法。包括private成员和静态成员。、注意:当内部类和外部类出现同名方法和变量时,会发生隐藏现象。(默认情况下访问的是内部类的成员)如果要访问外部类的同名成员,需要以下面的形式进行访问。


外部类访问内部类变量,必须要创建一个内部类对象,通过对象引用来访问内部类成员。


成员内部类是衣服于外部类而存在的。所以要创建一个内部类需要首先创建一个外部类对象。


内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限。比如上面的例子,如果成员内部类Inner用private修饰,则只能在外部类的内部访问,如果用public修饰,则任何地方都能访问;如果用protected修饰,则只能在同一个包下或者继承外部类的情况下访问;如果是默认访问权限,则只能在同一个包下访问。这一点和外部类有一点不一样,外部类只能被public和包访问两种权限修饰。我个人是这么理解的,由于成员内部类看起来像是外部类的一个成员,所以可以像类的成员一样拥有多种权限修饰。

(2)局部内部类(定义在一个方法或者一个作用域里面的类)


注:局部内部类的变量不能使用 public protected private static 修饰。

(3)匿名内部类(多用于事件的监听,使用较多)


注:匿名内部类也是不能有访问修饰符和static修饰符的

(4)静态内部类(定义在一个类内部的static 类)

静态内部类不依赖于外部类,静态内部类不能使用外部的非静态变量。


内部类使用场景:1有事件监听的情况。

你可能感兴趣的:(java内部类)