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 外部类().属性的方式。

经验分享 程序员 微信小程序 职场和发展