内部类
在一个类的内部添加一个类
成员内部类
内部类可以获得外部类的私有属性私有方法。
内部类实例化方法在Application中有说明:
package OOP02.demon9;
public class Outer {
private int id = 10;
public void out(){
System.out.println("外部类的方法");
}
public class Inside{
public void in(){
System.out.println("内部类的方法");
}
//内部类可以获得外部类的私有属性,私有方法
public void getId(){
System.out.println(id);
}
}
}
package OOP02.demon9;
public class Application {
public static void main(String[] args) {
Outer outer = new Outer();
//通过这个外部类来实例化内部类
outer.new Inside();
//外部类型的内部类型 对象名 = 外部实例化对象名.new 内部类型
Outer.Inside inside = outer.new Inside();
inside.in();
inside.getId();
}
}
静态内部类
若内部类的方法为static,则该方法无法访问外部非静态方法和属性。原因还是static在类生成时一同加载。
其他
一个java文件中只能有一个public class,但可以有多个class
package OOP02.demon9;
public class Outer {
}
class A{ }
局部内部类
方法里定义的变量就是局部变量,方法里定义的内部类就是局部内部类。
匿名实例化类
package OOP02.demon9;
public class Text {
public static void main(String[] args) {
//没有名字初始化类,不用将实例保存到变量中
new Apple().eat();
new User() {
@Override
public void get() {
}
};
}
static class Apple {
public void eat(){
System.out.println("eat apple");
}
}
interface User{
void get();
}
}