佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1042|回复: 4

Nested/Inner Class 的作用和目的

[复制链接]
发表于 18-5-2006 08:44 AM | 显示全部楼层 |阅读模式
近期看到一些例子使用 nested class ,
实在是无法理解 nested class 的实际目的和特别之处。

有劳各位为小章鱼讲解一些,或分享使用心得。

Nested Class 例子
  1. class myClass{
  2.     private class subClass1{ }
  3.     public class subClass2{ }
  4.     static class subClass3{ }
  5. }
复制代码
谢谢

[ 本帖最后由 sson 于 18-5-2006 08:59 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 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 观念和基础不好,还是有些不明了的地方
  1. public class A{
  2.     public class B{ }
  3. }

  4. 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.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 13-11-2024 09:59 PM , Processed in 0.119061 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表