简述:
java中将B类定义在A类中,那么B类就称之为内部类,内部类有分为两种,一种是成员内部类,一种是局部内部类;
设计思想:
在描述A类事物时发现其内部还有复杂的事物,该事物就用内部类B类进行描述,一般建议内部类B类进行private是封装,
在外部类中提供访问方法进行访问。
内部类访问规则:
内部类B类像访问外部类A类的成员(函数与变量)无需创建对象即可直接访问;包括外部类A类的private私有成员;
因为内部类B类访问外部类A类中的成员时,省略了:外部类A类.this.成员。
外部类A类想访问内部类B类的成员必须要先建立内部类B类的对象才能访问内部类B类中的成员;
在其他外部类中想访问内部类B类的成员,先要创建内部类B类的对象,
创建格式:外部类A类.内部类B类变量名称 = new 外部类A类.new 内部类B类;
成员内部类顾名思义就是B类在A类的成员位置时就称之为成员内部类,既然称之为成员内部类就能被成员修饰符所修饰;
例如:
private 将内部类B类在外部类A类中封装
static 内部类B类就具备了static的特性
当内部类被static修饰后就只能访问外部类A类中的静态成员,出现了访问局限
在其他外部类中想访问内部类中的非静态成员new 外部类A类.内部类B类().成员
在其他外部类中访问内部类中的静态成员 外部类A类.内部类B类.成员
注意事项:
当内部类B类中定义了static方法时,那么内部类B类也必须是static的
当外部类A类中的static方法想访问内部类时,那么内部类B类也必须是静态的
匿名内部类
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。 可以理解为带内容的对象。
5,匿名内部类中定义的方法最好不要超过3个。