Java学习(70)Java多态——静态内部类
1. 静态内部类概念及创建
静态内部类对象可以不依赖于外部类对象,直接创建。
public class Person01 {
public int age;
public Heart getHeart() {
new Heart().temp = 12;
return new Heart();
}
public void eat() {
System.out.println("人会吃东西");
}
static class Heart{
int age = 13;
int temp = 22;
public static void say() {
System.out.println("hello!");
}
public String beat() {
new Person01().eat();
return new Person01().age+"岁的心脏在跳动";
}
}
}
这里我们发现:在静态内部类中,只能直接访问外部类的静态成员(静态属性、静态方法),如果需要调用非静态方法,可以通过对象实例。
2. 获取静态内部类对象实例
public class PeopleTest {
public static void main(String[] args) {
//获取静态内部类对象实例
Person01.Heart myHeart = new Person01.Heart();
System.out.println(myHeart.beat());
Person01.Heart.say();
}
}
运行结果:
人会吃东西 0岁的心脏在跳动 hello!
这里我们发现: (1) 静态内部类对象实例时,可以不依赖于外部类对象; (2) 可以通过外部类.内部类.静态成员的方式,访问内部类中的静态成员; (3) 当内部类属性与外部类属性同名时,默认直接调用内部类中的成员;如果需要访问外部类中的静态属性,则可以通过外部类.属性的方式。如果需要访问外部类中的非静态属性,则可以通过new 外部类().属性的方式。
静态内部类小结
(1) 在静态内部类中,只能直接访问外部类的静态成员(静态属性、静态方法),如果需要调用非静态方法,可以通过对象实例; (2) 静态内部类对象实例时,可以不依赖于外部类对象; (3) 可以通过外部类.内部类.静态成员的方式,访问内部类中的静态成员; (4) 当内部类属性与外部类属性同名时,默认直接调用内部类中的成员;如果需要访问外部类中的静态属性,则可以通过外部类.属性的方式。如果需要访问外部类中的非静态属性,则可以通过new 外部类().属性的方式。
