点击查看:2015计算机等级考试二级Java入门教程章节汇总
点击查看:2015计算机等级考试二级Java入门教程第五章汇总
5.11 嵌套类
这里的嵌套类只在一个Outside型对象范围内才有意义,这是因为Inside没有声明为Outside类的静态成员。在建立一个Outside型对象以前,你不能建立任何的Inside对象。然而,当你声明一个包含嵌套类的类对象时,不需要建立嵌套类的对象,当然,被类的构造函数建立的对象除外。例如,假设我们用下列语句建立一个对象:
Outside outer-new outside()
没有建立嵌套类的对象Inside.如果你现在希望建立一个嵌套类的对象,就必须使用一个作为限定词的类的名字引用嵌套类。例如,己经声明了一个Outside类的对象,我们可以用下列语句建立一个Inside型的对象:
Outside.Inside inner=outer.new.Inside(); //Define a nested class object
这里我们己经建立了一个嵌套类的对象,它与我们前面建立的anter对象相关联。我们正是在outer对象的范围内建立一个Inside型的对象。
在Outside的非静态成员方法中,你可以使用Inside类名,而不需要任何限定,它将由编译器使用this变量自动地加以限定。所以我们可以在对象Outside的方法内建立新的Inside对象:
Inside inner=new Inside( ); //Define a nested class object
它等价于:
this.Inside inner=this.new Inside(); //Define a nested class object
所有这些暗示了一个静态方法不能建立一个非静态嵌套的类对象。因为Inside类不是Qutside类的静态成员,如果在Outside对象的范围内没有己存在的Inside对象,则引用一个不存在的对象将是错误的。由于Inside不是Outside类的一个静态数据成员,如果Outside类中的一个静态方法试图直接地建立一个Lnside型的对象,而开始并不存在一个Outside型的对象,这种尝试在一个对象的合法范围外建立对象的操作将是非法的。
还有,因为类Inside不是一个Qutside类的静态成员,所以它不能依次返回它自己包含的任何静态数据成员。由于Ir}ide本身不是静态的,所以它不能用静态成员充当一个自由稳定的类,这存在着逻辑上的矛盾。
嵌套类通常用来定义至少与包含它的类的对象有密切关联的对象,并且在两个类之间经常存在着紧密的结合。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |