黑马程序员技术交流社区
标题:
关于内部类修饰符
[打印本页]
作者:
amen0205
时间:
2013-3-5 22:02
标题:
关于内部类修饰符
本帖最后由 门文通 于 2013-3-6 21:20 编辑
当内部类定义在类的成员位置上时,可以被static 和 private 修饰,当内部类定义在局部时,就不可以被atatic修饰了.。
问:1 那么内部类在成员位置上时 可不可以被public修饰,为什么?
2 除了 static 和private ,内部类在这两个位置还可以被什么修饰符修饰?
3 对于成员函数和成员变量访问控制符里面还有一种 private protected,毕老师的视频里面也没提,是现在不常用?不重要?还是不能这么用了?
希望知道的同学帮我解答一下,谢谢。
作者:
李洪因
时间:
2013-3-5 22:41
内部类是外部类的成员,依附外部类存在,他可以用修饰成员变量的修饰符来修饰比如(public private protected final static)。
而外部类不可以:外部类只能使用publi和default。这里有一点注意的容易混淆的是内部类和外部类的成员变量,虽然两者不同,但是却可以用相同的修饰符修饰。
内部类的访问:
1)外部类不能直接访问内部类的的成员,但可以通过内部类对象来访问。(即使内部类是static的情况下也不可以)
2)内部类作为外部类的成员,可以访问外部类的所有成员。(但是静态内部类只能访问外部类的静态成员)
3)内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。
在一个方法中定义的内部类
在方法中定义的内部类称为局部内部类。与局部变量类似,在局部内部类前不加修饰符public和private,其范围为定义它的代码块。其他用法和成员内部类相同。
静态内部类其实已经脱离了外部类。在创建静态内部类对象时也不需要外部类对象的存在。其实质是一个放置在别的类内部的普通类。而关键字static也只是说明其在创建对象时不依赖于外部类对象的存在,并不是说这个类本身是静态的。
静态内部类与前面所讲的两种非静态内部类的语法基本相同。区别主要是在内部类的声明前面要加上static 关键字。另外
,静态内部类也不可以用private进行定义
。
因为用private修饰后其他类是不可能调用这个类了,而这个类也就没有存在的意义了。
静态内部类与非静态内部类的区别是本质上的。非静态内部类是外部类对象组成的一部分,主要是辅助外部类对象工作的,与外部类对象存在这对成员变量的共享关系。
作者:
amen0205
时间:
2013-3-6 21:18
李洪因 发表于 2013-3-5 22:41
内部类是外部类的成员,依附外部类存在,他可以用修饰成员变量的修饰符来修饰比如(public private protect ...
学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2