java_内部类

/*
 * 内部类访问规则:I-O内部类可直接访问外部类的所有成员;O-I外部类要访问内部必须建立内部类对象;
 * 内部类中定义了静态成员,该内部类必须是static;
 * 外部类的静态方法访问内部类时,内部类必须是静态的;
 * 描述事物时,事物内还有事物,就用内部类;因为内部类“直接”使用外部类的内容;内部类最好private
 * class human{
 * 	private class heart{
 * 
 * 	}
 * }
 * 
 * 
 * */
class Outer{
	static private int a=3;
	static class Inner//可以被private,public(封装)static(静态内部类,只能访问外部的静态成员,出现访问限制)
	{	
		static public int b=4;
		public void function()
		{
			System.out.println("lalala"+Outer.a);//之所以可以直接访问外部类的成员,因为内部类中持有一个外部类的引用,该引用写法是(外部类.this.)
		}
		public static void function1()
		{
			System.out.println("lalala"+Outer.a+1);
		}
	}
	static class Inner2{
		public  void function2()
		{
			System.out.println("lalala"+Outer.a+2);
		}
	}
	
	public static void visit(){
		Inner in=new Inner();//外部访问内部必须先建立内部的对象;
		in.function();
	}
	public static void run(){//外部类的静态方法访问内部类时,内部类必须是静态的;run(static)-Inner2(static)
		new Inner2().function2();
	}
}

class Outer1{
	//public String c="Outer1";
	public void run(){
		final int x=4;//1.7及以下版本声明final会报错(内部类访问局部变量)
		class Inner3//Inner3在局部,不能再被public/private/static修饰;
		{
			//String c="Inner3";
			public void ge()//局部时内部不能有static成员,否则外部必须要有static,而static只能出现在成员前,故不可出现静态成员;
			{
			System.out.println(x);
			}
		
		}
		/*
		 * Inner3 i3=new Inner3();
		i3.ge();
		*/
		new Inner3().ge();//一回事
	}
}


//----------------------------------------------------------------------------
public class InerClass {

	public static void main(String[] args) {
		/*
		Outer.Inner ii=new Outer().new Inner();
		ii.function();
		*/
		/*
		new Outer.Inner().function();//访问静态内部类的非静态成员,必须要new一个该函数直属的类;
		Outer.Inner.function1();//静态内部类的静态成员
		Outer.visit();
		System.out.println(Outer.Inner.b);//访问静态内部类静态属性;
		*/
		//Outer.run();
		new Outer1().run();
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值