首页 > 其他 > 详细

内部类相关问题

时间:2021-03-14 00:11:04      阅读:21      评论:0      收藏:0      [点我收藏+]

内部类

1、局部内部类

在什么场景下回使用局部内部类呢?

public class Demo01 {
	
	public static void main(String[] args) {
		/**
		 * 假设我们现在要调用接口中的方法,这个方法需要传递一个参数,是一个接口类型
		 * 这个时候我们没法实例化这个接口,并且这个东西我们可能只需要使用一次
		 * 因此我们需要写一个内部类来实现
		 */
		class Student implements Person {
			@Override
			public void test() {
				// TODO Auto-generated method stub
				
			}
		}
		Student s = new Student();
		//此时我们就可以使用Other类里面的方法了
		Other o = new Other();
		o.test(s);
	}
	
}

interface Person {
	public void test();
}

class Other {
	public void test(Person p) {
	}
}

简单来说,使用场景就是:

? 1、不需要重复多次使用的类

? 2、需要使用的方法传递的参数不方便实例化

2、为什么内部类中使用外部类的成员变量必须是final修饰的?

/**
 * 内部类
 */
public class Outer {
	int a = 10;
	//a = 20;
	/**
	 * 外部类
	 */
	class inner {
		public void say() {
			System.out.println(a);
		}
	}
	
}
问题描述:
	在这段代码中,假设我们在外部类的第二行执行a=20,修改a的值,程序将会报错,说明此时a默认是final修饰的常量,那么为什么会这样呢?
原因:
	因为类在编译的时候会编译成一个一个的class文件,那么为了保证内部类中的使用的变量与外部类中保持一致,那么系统自动将外部类中的成员变量自动变成final修饰的常量。

内部类相关问题

原文:https://www.cnblogs.com/huangwenchao0821/p/14529572.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!