Java中的内部类
一.成员内部类
- 1.位置
- 在类的内部,与成员变量,方法同级
- 2.访问权限修饰符
- 可以设置全部的类型的访问权限修饰符
- 3.访问外部类的范围
- 所有外部类属性和方法(包括private修饰的)
- 4.内部的方法和属性
- 只能有非静态的方法和属性
- 5.创建对象
- 通过创建外部类对象来创建
public class InstanceOutterClass{
private String name;
private static int age;
public void say(){}
public static void main(String[] args){
new InstanceOutterClass().new InstanceInnerClass();//创建成员内部类对象
}
public class InstanceInnerClass{}
}
二.静态内部类
- 1.位置
- 在类的内部,与成员变量,方法同级
- 2.访问权限修饰符
- 可以设置全部的类型的访问权限修饰符
- 3.访问外部类的范围
- 所有外部类静态属性和方法(包括private修饰的)
- 4.内部的方法和属性
- 可以写所有类型的方法和属性
- 5.创建对象
- 通过外部类.内部类构造器
public class StaticOutterClass{
private String name;
private static int num;
public void say(){}
public static void main(String[] args){
new StaticOutterClass.StaticInnerClass();//创建静态内部类对象
}
public static class StaticInnerClass{}
}
三.局部内部类
- 1.位置
- 在类的方法内部
- 2.访问权限修饰符
- 就像成员中的一个局部变量,没有访问权限修饰符
- 3.访问外部类的范围
- 可以访问外部类的成员方法和变量;访问外部方法或外部作用域中的属性是,被访问的属性会被final修饰
- 4.内部的方法和属性
- 和方法中的普通属性一样,所以不能有静态方法和属性
- 5.创建对象
- 在该方法或作用域内部创建
四.匿名内部类
- 1.位置
- 任何地方,但是要依托于类或接口创建
- 2.访问权限修饰符
- 没有访问权限修饰符
- 3.访问外部类的范围
- 和局部内部类一致
- 4.创建对象
- 声明时候就会创建,且声明必须是跟在
new 类名()
后面
- 声明时候就会创建,且声明必须是跟在
- 5.内部的方法和属性
- 和方法中的普通属性一样,所以不能有静态方法和属性
- 6.注意
-
匿名内部类除了依托的类或接口之外,不能指定继承或者实现其他类或接口,同时也不能被其他类所继承,因为没有名字。
-
匿名内部中,我们不能写出其构造器,因为没有名字。(有无参构造器)
-
如果依托的是类,那么创建出来的匿名内部类就默认是这个类的子类;如果依托的是接口,那么创建出来的匿名内部类就默认是这个接口的实现类。
-
如果依托的是类,那么创建出来的匿名内部类就默认是这个类的子类;如果依托的是接口,那么创建出来的匿名内部类就默认是这个接口的实现类。
-