A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© amen0205 中级黑马   /  2013-3-5 22:02  /  1969 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 门文通 于 2013-3-6 21:20 编辑

当内部类定义在类的成员位置上时,可以被static  和 private 修饰,当内部类定义在局部时,就不可以被atatic修饰了.。

问:1 那么内部类在成员位置上时 可不可以被public修饰,为什么?
      2  除了 static 和private  ,内部类在这两个位置还可以被什么修饰符修饰?
     

       3 对于成员函数和成员变量访问控制符里面还有一种 private protected,毕老师的视频里面也没提,是现在不常用?不重要?还是不能这么用了?

希望知道的同学帮我解答一下,谢谢。

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

3 个回复

倒序浏览
内部类是外部类的成员,依附外部类存在,他可以用修饰成员变量的修饰符来修饰比如(public private protected final static)。而外部类不可以:外部类只能使用publi和default。这里有一点注意的容易混淆的是内部类和外部类的成员变量,虽然两者不同,但是却可以用相同的修饰符修饰。
  内部类的访问:
  1)外部类不能直接访问内部类的的成员,但可以通过内部类对象来访问。(即使内部类是static的情况下也不可以)
  2)内部类作为外部类的成员,可以访问外部类的所有成员。(但是静态内部类只能访问外部类的静态成员)
  3)内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。
  在一个方法中定义的内部类
  在方法中定义的内部类称为局部内部类。与局部变量类似,在局部内部类前不加修饰符public和private,其范围为定义它的代码块。其他用法和成员内部类相同。
  静态内部类其实已经脱离了外部类。在创建静态内部类对象时也不需要外部类对象的存在。其实质是一个放置在别的类内部的普通类。而关键字static也只是说明其在创建对象时不依赖于外部类对象的存在,并不是说这个类本身是静态的。
  静态内部类与前面所讲的两种非静态内部类的语法基本相同。区别主要是在内部类的声明前面要加上static 关键字。另外,静态内部类也不可以用private进行定义因为用private修饰后其他类是不可能调用这个类了,而这个类也就没有存在的意义了。
  静态内部类与非静态内部类的区别是本质上的。非静态内部类是外部类对象组成的一部分,主要是辅助外部类对象工作的,与外部类对象存在这对成员变量的共享关系。

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
李洪因 发表于 2013-3-5 22:41
内部类是外部类的成员,依附外部类存在,他可以用修饰成员变量的修饰符来修饰比如(public private protect ...

学习了         
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马