Day06_32_Java各种内部类
内部类
-
内部类都有哪些?
-
成员内部类
-
匿名内部类
-
静态内部类
-
局部内部类
-
-
成员内部类
- 成员内部类内部不能有静态声明(静态方法和静态变量) - 成员内部类可以访问外部类中所有的数据包括静态数据和实例
-
语法
// 外部类 public class Outer { // 外部类变量 private int id=10; // 外部类方法 public void out(){ System.out.println("外部类方法"); } // 成员内部类 public class Inner{ // 内部类方法 public void in(){ System.out.println("内部类方法"); } // 内部类获取外部类变量(id) public void getId(){ System.out.println(id); } }
}
-
创建成员内部类对象
// 创建成员内部类对象 Outer.Inner inner=outer.new Inner(); // 调用内部类方法 inner.in(); inner.getId();
-
-
静态内部类
-
静态内部类可以等于看做内部变量
-
可以用访问修控制权限符修饰
-
内部类重要的作用:可以访问外部类中私有的数据。
-
静态内部类可以直接访问外部类中的静态数据,无法直接访问成员数据
-
-
静态内部类的定义
public class statiinclass {
//静态方法
public static void mian(String []args) {
innerClass.m3();
}
//静态变量
private static String s1="A";
//成员变量
private String s2="B";
//静态方法
private static void m1() {
System.out.println("static's m1 method execute!");
}
//成员方法
private void m2() {
System.out.println("m2 method execute!");
}
//静态内部类
//可以用访问修控制权限符修饰
//内部类重要的作用:可以访问外部类中私有的数据。
//静态内部类可以直接访问外部类中的静态数据,无法就直接访问成员数据
static class innerClass{
//静态方法
public static void m3() {
System.out.println(s1);
statiinclass.m1();
}
//成员方法
public void m4() {
System.out.println();
}
}
}
* 局部内部类
- 局部内部类等同于局部变量
- 局部内部类中不能有静态声明(静态方法和静态变量)
- 局部内部类在访问局部变量的时候,该局部变量必须使用final关键字修饰
- 局部内部类需要在局部内部类中创建对象,引用内部类中的方法,然后在主方法中调用包含内部类的方法就实现了依次执行
* 匿名内部类
- 指的是类没有名字,没有名字的类。
- 匿名内部类的优点是少定义一个类、缺点是无法重复使用。