内部类:
1.java中允许将一个类A声明在类B中,A为内部类,B为外部类
2.外部类的分类:成员内部类 vs 局部内部类(方法内,代码块内,构造器内)
3.成员内部类:
一方面: 作为外部类B的成员:
- 调用外部类B的结构
- 可以被static修饰
- 可以被4种不同的权限修饰
另一方面:作为一个类:
- 类内可以定义属性,方法,构造器等
- 可以被final修饰,表示此类不能被继承.言外之意:不适用final,就可以被继承
- 可以被abstract修饰
public class InnerClassTest {
public static void main(String[] args) {
//创建静态的Dog内部类的实例(静态的成员内部类)
Person.Dog dog = new Person.Dog();
//创建非静态的Bird内部类的实例(非静态成员内部类)
Person person = new Person();
Person.Bird bird = person.new Bird();
bird.sing();
}
}
class Person {
String name;
int age;
public void eat() {
System.out.println("chi");
}
//静态成员内部类
static class Dog {
// eat();//不能调非静态
}
//非静态成员内部类
class Bird {
public void sing() {
Person.this.eat();//调用外部类的属性
}
}
public void method() {
//局部内部类
class A {
}
}
{
//局部内部类
class B {
}
}
public Person() {
//局部内部类
class C {
}
}
}