内部类
-
把一个类放在另一个类的内部定义,这个定义在其他类的内部的类就被称
为内部类,包含内部类的类被称为外部类。 -
内部类作用
1> 提供更好的封装
2> 可以直接访问外部类的私有数据
3> 匿名内部类适合用于创建仅需要一次使用的类
4>内部类定义在其他类的两点区别:内部类比外部类可以多使用三个修饰符:private ,protectod ,static —— 外部类不能使用这三个修饰符。 非静态内部类不能拥有静态内部类public class OuterClass{
//此处可以定义内部类
}
成员内部类
定义成员内部类语法格式:
public class Person{
//成员内部类,可以使用类的修饰符
public final class work1(){
}
protected class work2(){
}
class work3(){
}
private abstract class work4(){
}
}
静态内部类
-
用 static 修饰的内部类称为静态内部类。
语法格式:public class Person{ //静态内部类 public final static class work{ } public abstract static class work2{ } } -
静态内部类是外部类的一个静态成员,因此外部类的所有方法,所有初始化块中的可以使用静态内部类来定义变量,创建对象。
-
接口内部类只能是静态内部类。
局部内部类
-
把内部类放在方法里定义,这个内部类就是局部内部类,局部内部类仅在该方法中有效
public class Loac{ public static void main(String[] args){ //定义局部内部类 class Inner{ int a; } //定义局部内部类子类 class Innerser extends Inner{ int b; } //创建局部内部类对象 Innerser in = new Innerser(); in.a = 5; in.b = 6; System.out.printIn(in.a+in.b); } }
匿名内部类
-
定义匿名内部类格式
new 实现接口() | 父类构造器(实参列表) { //匿名内部类的类体部分 } -
两条规则
1> 匿名内部类不能是抽象类,在创建匿名内部类时,会立即创建匿名内部类的对象
2> 匿名内部类不能定义构造器,但匿名内部类可以定义初始化块,通过实例初始化块完成构造器需要完成的事情。
1万+

被折叠的 条评论
为什么被折叠?



