/**
* 1\将一个类A声明在另一个类B中,则A就是内部类,B为外部类
*
* 2\内部类的成员:成员内部类(静态、非静态) VS 局部内部类(方法内、代码块、构造器)
*
* 3\成员内部类:
* 1、作为外部内的成员
* >可以调用外部类的方法
* >可以被static修饰
* >可以被4种权限修饰
*
* 2、作为一个类:
* >可以定义方法、属性、方法、构造器
* >可以被final修饰,表示不可以被继承
* >可以被abstract,表示不能被实例化
*
*
*
*/
public class InnerClassTest {
public static void main(String[] args) {
//创建Dog实例(静态的成员内部类)
Person.Dog dog=new Person.Dog();
dog.show();
//创建Bird(静态的成员内部类)
Person person=new Person();
Person.Bird bird=person.new Bird();
bird.string();
bird.display("黄鹂");
}
}
class Person{
String name="小明";
int age;
public void eat(){
System.out.println("人,吃饭");
}
//静态成员内部类
static class Dog{
String name;
int age;
public void show(){
System.out.println("拉卡是条狗");
}
}
//非静态成员内部类
class Bird{
String name="杜鹃";
public Bird(){
}
public void string(){
System.out.println("我是一只小小鸟");
Person.this.eat();//Person.this.省略
}
public void display(String name){
System.out.println(name);
System.out.println(this.name);//内部
System.out.println(Person.this.name);//外部
}
}
public void method(){
//局部内部类
class AA{
}
}
{
//局部内部类
class BB{
}
}
}
运行结果:
拉卡是条狗
我是一只小小鸟
人,吃饭
黄鹂
杜鹃
小明