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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周世阳 中级黑马   /  2012-8-14 16:15  /  1683 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周世阳 于 2012-8-17 02:15 编辑

FileOne:
public class Test {
    class Test1 {
        public String get() {
            return ("any difference?");
        }
    }
}

FileTwo:
public class Test {}
   
class Test1 {
        public String get() {
            return ("any difference?");
        }
}

如上,FileOne里面的Test2类写在Test1里面,FileTwo将两个类放在一个文本里,第一个叫内部类,可是跟第二个有什么区别么?如果将两个类分别写在两个文本呢?有和两个类在一个文本里有什么区别?

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
类是对有相同属性和行为的一类事物的描述,如果事物内部还有事物,则用内部类来描述。
而将两个类分开写,则这两个类之间是没有直接联系的。也就是说,两种表述,主要是表达的关系不同。

两个类写在一个文本中,则只有一个类可以用public修饰,两个类是属于同一个包的,但有public修饰的类可以被别的包中的对象访问,而没有public修饰的类,只能被该包中的对象访问。
两个类分别写在两个文本中,则两个类都可以用public修饰,这样不管是否在同一个包中,都可以互相访问。
主要是访问权限的区别。

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报

内部类一般是供这个类的内部使用,如果外面需要使用的时候,一般定义成一个不相关的外部类。

如果写在一个文本中,则只有这个定义成文件名的这个类可以用public修饰,两个类是属于同一个包的,但只有public修饰的类可以被别的包中的对象访问,
没有public修饰的类,只能被该包中的对象访问。

两个类分别写在两个文本中,则两个类都可以用public修饰,在不同的包中,都可以访问。


评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
我也来补充下,第一个FileOne中的内部类Test1可以直接访问外部类Test中的成员(FileTwo不能),而第二个FileTwo中的Test1如果要访问Test中的非静态成员必须建立Test的对象,Test访问Test1也一样。

如果将两个类写在两个文本中有个特殊的地方--protect权限,如果Test1中有成员被protect修饰了的话,Test是不能访问的,除非继承了Test1。
回复 使用道具 举报
子貌似大了点。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马