JAVA中的内部类(三)局部内部类的使用

定义

方法或某个作用域内的内部类,称为局部内部类。匿名内部类就是一种局部内部类。

局部内部类基本形式:

class People{
    public People() {      
    }
}
class Man{
    public Man(){        
    }
public People Woman(){
        class Woman extends People{   //局部内部类
            int age =0;
        }
        return new Woman();
    }
}

 进阶操作

package com.Class;

public class People {
	public double height = 5;
	int age;
	public People() {
		
	}
	void show() {
		System.out.println(age);
	}
}
package com.Class;
public class Man {
	public Man() {	}
	int a = 10;
	public People Woman(){//Woman类出来这个Woman函数则无法使用
		int b = 20;
		class Woman extends People{ //这一步是为了使得Woman能够在另一个类中实例化
			int age = 30;
			void show() {
				System.out.println(age);
				System.out.println(b);
			}
			@Override
			public String toString() {
				return "Woman [age=" + age + "] [height="+height + "]";
			}
		}
		Woman woman = new Woman();
		return woman ; 
	}
}
package com.Class;
public class PeopleTest {
	public static void main(String[] args) {
		Man aMan = new Man(); //new一个外部类
		People womanPeople = aMan.Woman(); //通过外部类使用放在内部类的方法,而局部内部类只能在函数里面使用,但是可以通过返回对象用父类继承,从而在外部使用
		womanPeople.show();
}
}

 

总结:

规则一:局部内部类类似方法的局部变量,所以在类外或者类的其他方法中不能访问这个内部类,但这并不代表局部内部类的实例和定义了它的方法中的局部变量具有相同的生命周期。

规则二:只能在方法内部使用,类(局部内部类)定义之后使用,不存在外部可见性问题,因此没有访问修饰符。

规则三:不能在局部内部类中使用可变的局部变量。

规则四:可以访问外围类的成员变量。如果是static方法,则只能访问static修饰的成员变量。

规则五:可以使用final 或 abstract修饰。

 文章参考:https://blog.csdn.net/u014745069/article/details/80210288

你可能感兴趣的:(java)