查看: 1042|回复: 4
|
Nested/Inner Class 的作用和目的
[复制链接]
|
|
近期看到一些例子使用 nested class ,
实在是无法理解 nested class 的实际目的和特别之处。
有劳各位为小章鱼讲解一些,或分享使用心得。
Nested Class 例子
- class myClass{
- private class subClass1{ }
- public class subClass2{ }
- static class subClass3{ }
- }
复制代码 谢谢
[ 本帖最后由 sson 于 18-5-2006 08:59 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 18-5-2006 09:04 AM
|
显示全部楼层
Nested Class 可以作为一个 class 的 "专属" 物件.
例如说, 我有两个 class, UserManager, AccountManager. 但看名字你应该知道这两个 class 处理不同的东西. 但是, 这两个 class 分别会用到我的另一个 abstrac class, SQLBuilder class 来处理不同的 sql. 于是... 我就这样写:
class UserManager {
class MySQL : SQLBuilder {
public override Update {
// update user table
}
}
}
class AccountManager {
class MySQL : SQLBuilder {
public override Update {
// update account table
}
}
}
这时候也许你会问, 为什么不直接用 extend? 一样可以达到相同的效果呀. 答案是肯定的. 问题在于是设计的问题, 例如说很多时候, 在个别的 subclass 里, 要加如个别的 method, properties 等. |
|
|
|
|
|
|
|
楼主 |
发表于 18-5-2006 09:25 AM
|
显示全部楼层
谢谢你为小章鱼解答,
如此看来, nested 只是为设计上的便利、更明了关系而已对吧?
也就是说,一般 nested class 只给其 enclosing/outer class 使用罢了,对吗?
抱歉,小章鱼的 OOP 观念和基础不好,还是有些不明了的地方
- public class A{
- public class B{ }
- }
- A.B obj = new A.B()
复制代码 如此设计的目的又在那里? |
|
|
|
|
|
|
|
发表于 18-5-2006 11:46 AM
|
显示全部楼层
如果你Class Inheritance,我比较喜欢这样写
Class Programmer
Public XXXXXX As String
End Class
Class XXXXXX
Inherits Programmer
Public Programmers() As Programmer
End Class |
|
|
|
|
|
|
|
发表于 18-5-2006 12:25 PM
|
显示全部楼层
原帖由 sson 于 18-5-2006 09:25 AM 发表
谢谢你为小章鱼解答,
如此看来, nested 只是为设计上的便利、更明了关系而已对吧?
也就是说,一般 nested class 只给其 enclosing/outer class 使用罢了,对吗?
抱歉,小章鱼的 OOP 观念和基础 ...
可以那么说, 也可以说设计上的限制. 因为某些时候, 有写 class 是你想隐藏起来的, 却又在你的 class 里到处都有用的.
你上述的例子, 其实也是设计的一种, 纯粹是因为 sub class 的属性是 public, 也许设计师想在 class 以外呼叫 sub class. |
|
|
|
|
|
|
| |
本周最热论坛帖子
|