静态内部类的创建可以不依赖于外部类,直接创建的
eg:
public class Person {
public int age;//外部类要调用内部类信息 需要实例化(eg:new Heart.temp =12),无法直接访问
public Heart getHeart() {
return new Heart();
}
public void eat() {
System.out.println("人会吃东西!");
}
//静态成员类
/*
* 1、静态内部类中,只能直接访问外部静态类成员,如何调用非静态类成员,可以通过对象实例( new Person().eat();)
* 2、静态内部类实例时,可以不依赖于外部类对象
* 3、可以通过外部类.内部类.静态成员的方式访问内部类的静态成员(注意访问权限)
* 4、当内部类属性同名时,默认直接调用内部类中的成员,
* 如果需要访问外部类的静态成员属性,则可以通过 外部类.属性 的方式;
* 如果需要访问外部类的非静态成员属性,则可以通过 new 外部类().属性 的方式;
* */
static class Heart{
public static int age =12;
public static void say(){
System.out.println("hello!");
}
public String beat() {
new Person().eat();
return new Person().age + "岁的心脏再跳动";
}
}
}
public class TestPerson {
public static void main(String args[]) {
Person lili = new Person();
//获取静态内部类的方法
Person.Heart myHeart = new Person.Heart();
System.out.println(myHeart.beat());
Person.Heart.say();
}
}