Java私有内部类实例化对象访问私有内部类中的方法

今天和小伙伴讨论私有类的对象创建问题,大家都知道外部类是不能设置为私有的,但是内部类可以设置为私有。问题是私有内部类是否可以实例化一个对象,并调用私有内部类中的方法和属性呢?答案是:Yes!Java语法规范既然允许创建私有的内部类,私有内部类中的方法肯定会被调用。要不然,私有内部类就失去了它的作用。
于是小coder尝试写了如下代码。
public class Test1 {

	/**
	 * @param args
	 */

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		People1 p=new People1();
		People1.Man man = p.new Man();
		System.out.println(man.name);
	}
}

class People1{
	class Man{
		String name;
		int year;
	}
}
public class Test2 {

	/**
	 * @param args
	 */

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		People2.Man2 man = new People2.Man2();
		System.out.println(man.name);
	}
}

class People2{
	static class Man2{
		String name;
		int year;
	}
}
public class Test3 {

	/**
	 * @param args
	 */	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String name="xiaom";
		Test3 test=new Test3();
		Test3.Outer outer=test.new Outer();
		((Test3.Outer.Inner) outer.getInner()).setName(name);
		System.out.println(((Test3.Outer.Inner) outer.getInner()).getName());		
	}
	
	class Outer{
		 Object getInner(){
			return this.inner;
		}
		private class Inner{
			String name;
			public String getName() {
				return name;
			}

			public void setName(String name) {
				this.name = name;
			}
		}
		Inner inner=new Inner();	
	}
}
 

你可能感兴趣的:(java,内部类,对象,私有内部类)