inner总结

package InnerClass;
/**
 * 定义变量和方法:自内至外的就近约束
 * 访问变量和方法:由外至内的就近约束
 * BaseStudent1:内部类变量或方法与外部类变量或方法重名时,默认会使用内部类的变量或方法。如果想用外部类的变量或方法则需要用BaseStudent.this.变量名
 */
public class BaseStudent {
	private String name1;
	private static String name2;
	
	public void getStudent1() {
		new BaseStudent1();//在实例方法中,实例成员内部类可以直接new用
		new BaseStudent.BaseStudent2();//静态成员内部类直接new
	}
	
	public static void getStudent2() {
		new BaseStudent().new BaseStudent1();//在类方法中,实例成员内部类得先new外部内,然后new内部成员非static类
		new BaseStudent2();//在类方法中,类成员内部类直接new用
	}
	
	/**
	 * 一.成员非static内部类
	 *实例变量:可以被实例访问
	 *定义:只可以定义实例变量和方法
	 *访问:可以访问实例和类对应的变量和方法
	 */
	public class BaseStudent1{
		public final static int age1 = 20;//定义字面常量除外,因为是在编译时处理
		public Integer age2;
		final Integer age3 = 20;
		private String name1;
		public void getStudent() {
			System.out.println(age1+age2+BaseStudent.this.name1+name2);
			BaseStudent.this.getStudent1();
		}
		public void getStudent1() {}
	}
	
	/**
	 * 二.成员static内部类
	 *类变量:可以被类和实例访问
	 *定义:可以定义类和实例变量以及方法
	 */
	public static class BaseStudent2{
		public final static int age1 = 20;//定义字面常量除外,因为是在编译时处理
		public static int age2;
		public int age3;
		
		/**访问:
		 * 1.对该类的变量和方法,受到声明此方法约束
		 * 2.对外部类的变量和方法,受到声明此类的约束
		 */
		public void getStudent1() {
			System.out.println(age2+age3+name2);
		}
		public static void getStudent2() {
			System.out.println(age2+name2);
		}
	}
	
	public void getStudent3() {
		String tel1;//jdk8则没有final约束
		final String tel2;//jdk7必须这样声明才可以访问
		/**
		 *三.局部内部类
		 *1.局部变量:
		 *2.定义:内部类的定义受到局部变量的约束,内部类中的成员变量和方法的定义则受内部类的约束
		 *3.访问: 外部类成员变量和方法的访问受到getStudent()的约束,对getStudent()局部变量访问在jdk7中得声明为final,jdk8则没有这个约束
		 */
		class BaseStudent3{
			protected final static int age1 = 20;//定义字面常量除外,因为是在编译时处理
			public int age2;
			private final int age3 = 20;
			public void getStudent() {
				System.out.println(age1+age2+name1+name2);
			}
		}
	}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值