首页 > 试题广场 >

下列说法正确的是()?

[不定项选择题]
下列说法正确的是()?
  • 对于局部内部类,只有在方法的局部变量被标记为final或局部变量是effctively final的,内部类才能使用它们
  • 成员内部类位于外部类内部,可以直接调用外部类的所有方法(静态方法和非静态方法)
  • 由于匿名内部类只能用在方法内部,所以匿名内部类的用法与局部内部类是一致的
  • 静态内部类可以直接访问外部类的非静态成员
选AB,
自己总结的,希望能帮到大家。
发表于 2018-07-01 14:13:03 回复(60)
我总结了内部类的所有要点,大家可以对照图片看下


编辑于 2019-10-21 21:31:38 回复(37)
A首先,外部类和内部类是处于同一个级别的,内部类不会因为定义在方法中就随着方法执行完毕而被销毁。那么问题来了,如果外部类的方法中变量不定义为final,那么外部类的方法执行完毕后,这个局部变量肯定被gc了。这时候内部类的某个方法还没执行完,却找不到他引用的外部变量了。如果定义为final,Java就会将这个变量复制一份作为成员变量置于内部类中,这样的话,final修饰的值始终无法改变,所以这个变量所指向的内存区域就不会变。
发表于 2017-09-12 08:15:12 回复(4)
A、对。
B、对。
C、错。匿名内部类用法与局部内部类不一致,首先从定义上就不一样,匿名类用在任何允许存在表达式的地方,而局部内部类用于在任何允许出现局部变量的地方出现。
还有更重要的是匿名类只能使用一次,而局部类则可以在自己的定义域内多次使用。
D、错。静态内部类不能直接访问外部类的非静态成员,但可以通过new外部类().成员的方式访问。

发表于 2018-02-26 19:09:50 回复(9)
成员内部类是专指非静态的,静态内部类不能称之为成员
发表于 2017-09-11 23:14:12 回复(1)

C选项,匿名内部类用法与局部内部类不一致,首先从定义上就不一样,匿名类用在任何允许存在表达式的地方,而局部内部类用于在任何允许出现局部变量的地方出现。
还有更重要的是匿名类只能使用一次,而局部类则可以在自己的定义域内多次使用。

发表于 2017-08-30 08:32:47 回复(0)
B 成员内部类必须依托于外部类才能存在,也就是说必须先创建外部类的对象才能创建内部类,因此内部类可以访问外部类的所有东西(此时外部类的所有成员已经都存在了);
发表于 2017-08-18 21:05:10 回复(0)
自己总结的,大家可以看看

发表于 2019-02-19 17:24:21 回复(2)
答案有问题。
D也是正确的。
静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问。
发表于 2017-11-22 05:04:55 回复(3)
局部内部类之所以要在外部方法中给参数增加final参数。是因为局部内部类对于使用到的方法中的参数,会在类中生成相应的变量。而变量之间通过引用或者值传递(八大基本类型)。而在我们的逻辑中,局部内部类和方法中的参数是同一个参数。可如果在方法中或者局部内部类的方法中改变了变量的引用指向或者值(八大基本类型),相应的内部类或者方法中该变量的引用和值(八大基本类型)却并没有改变,会导致逻辑与实际情况脱节。 为了解决这个问题才使用final修饰符让变量无法改变引用或者值(八大基本类型)。这样就不会出现不一致的情况。
发表于 2018-05-31 12:21:41 回复(1)

发表于 2018-10-26 10:14:46 回复(3)
A:局部内部类和匿名内部类访问的局部变量必须由final修饰,java8开始,可以不加final修饰符,由系统默认添加。java将这个功能称为:Effectively final 功能。
发表于 2021-03-30 09:25:23 回复(0)
发表于 2019-03-14 15:12:05 回复(0)
D选项,不是可以new外部类().成员的方式访问吗? 选项中也没有说是直接访问。
发表于 2019-02-22 10:01:30 回复(0)
D选项为什么不对?静态内部类虽然不能直接访问外部类的成员变量,但是可以通过对象初始化来访问呀?求解惑
发表于 2018-01-24 17:04:52 回复(1)
匿名内部类用法与局部内部类不一致,匿名类用在任何允许存在表达式的地方,而局部内部类用于在任何允许出现局部变量的地方出现。
还有更重要的是匿名类只能使用一次,而局部类则可以在自己的定义域内多次使用
发表于 2022-03-15 00:05:50 回复(0)
C:匿名内部类没有构造器,不能new,局部内部类可以在作用域内构造。
发表于 2022-02-05 13:35:48 回复(0)
好家伙,选了个CD
发表于 2021-10-30 23:11:56 回复(0)
A选项,对于java8,已经不需要加上final了 B选项,成员内部类的方法中可以直接调用外部类的静态和非静态方法
发表于 2018-12-01 23:16:48 回复(1)
非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员。
发表于 2017-08-22 09:50:06 回复(2)