概念:内部类是指在一个外部类的内部再定义一个类
目的好处:使用内部类可以使程序更加的简洁,便于命名规范和划分层次结构
语法:
//定义外部类
class Outer {
//1.外部类成员
//2.成员内部类
[访问修饰符] class 内部类名 {
//3.内部类成员
}
[访问修饰符] 数据类型 方法名([参数列表]) {
内部类名 对象 = new 内部类名() ;
对象.成员...
}
}
说明
1)作为外部类的一个成员存在,与外部类的属性、方法并列
2)在内部类中,访问内部类的成员:this.成员
3)在内部类中,访问外部类的成员:外部类名.this.成员 或 直接访问成员
4)成员内部类中,不可以有静态成员(为什么?与成员方法中,不允许访问静态成员一样,成员内部类中不能存在任何static的变量和方法)
5)成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。语法如下:
外部类 外部类对象 = new 外部类() ; 外部类名称.内部类名称 内部类对象 = new 外部类名称().new 内部类名称() ; 外部类名称.内部类名称 内部类对象 = 外部类对象.new 内部类名称() ;
2、优点
内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使将外部类的成员声明为private,但是对于处于其内部的内部类还是可见的。)
/**
内部类只能在内部使用
第一:私有化内部类
第二:在外部类中,编写公开方法,创建并使用私有的内部类
第三:创建外部类对象,调用公开方法
*/
public class Outer {
private int count = 100 ;
//1、private修改内部类,则此类只能在类内部使用
private class Inner {
public void display() {
System.out.println("count="+count);
}
}
//2、在外部类中,编写公开方法,创建并使用私有的内部类
public void test() {
Inner inner = new Inner() ;
inner.display();
}
}
public class MainTest {
public static void main(String[] args) {
//3、创建外部类对象,通过调用公开方法来使用私有内部类
Outer outer = new Outer() ;
outer.test();
}
}