首页 新闻 会员 周边

c#类继承,子类是否自动继承父类方法

0
悬赏园豆:10 [待解决问题]

类中的方法都是静态的,并且访问属性是public.

public class A{public static void Hello(){}}

public class B:A{}

在别的地方,使用class B可以访问到Hello方法。

进一步继承

public class C:B{}

在C中可以访问到Hello方法,但是在外部,比如WEB站点添加,引用访问不到Hello方法。

是否多级继承的设计?希望能找到官方的解释。

-----------------------

一开始我也是坚信没有问题,使用C.Hello是可以出来的。

问题补充:

贴代码:

这个是在类库BLL中。

  public class A : Repository<UserProfileInfo> { public static void Hello() { } }
    public class B:A{   }
    public class C:B{   }
 public class Repository<T> :QueryPage<T> where T : Pager 
    {
}
 public class QueryPage<T>  where T: Pager
    {
 public static int Insert(T item)
        {
return 0;
}
}
现在BLL中使用C.Insert是可以的。
但是在WEB中添加对BLL引用后,只可以打出C.Hello,而打不出C.Insert
-----------------------------------
public class A  { public static void Hello() { } } public class B:A{ } public class C:B{ }
如果直接这样是可以的。
lucika.zh的主页 lucika.zh | 初学一级 | 园豆:62
提问于:2014-06-17 13:24
< >
分享
所有回答(4)
0

可以访问的

Qlin | 园豆:2403 (老鸟四级) | 2014-06-17 13:28

表现已经写的很清楚了,在C中是不可以访问到Hello方法的。

支持(0) 反对(0) lucika.zh | 园豆:62 (初学一级) | 2014-06-17 13:30

@lucika.zh: 具体 贴代码或者截图,应该是可以的

支持(0) 反对(0) Qlin | 园豆:2403 (老鸟四级) | 2014-06-17 13:36
0

理论上可以访问,建议你贴代码~

幻天芒 | 园豆:37205 (高人七级) | 2014-06-17 13:58

实际上不可以。

支持(0) 反对(0) lucika.zh | 园豆:62 (初学一级) | 2014-06-17 16:13

@lucika.zh: 怎么会不可以~你引用搞错了吧。

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2014-06-17 16:43

@幻天芒: 贴出了代码。谢谢!

支持(0) 反对(0) lucika.zh | 园豆:62 (初学一级) | 2014-06-17 17:26

@lucika.zh: 这代码让我看得更迷糊~

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2014-06-17 17:52

@幻天芒: 我只看代码,同样我认为是可以引用到的。只是亲身体验才知道。在类C或者A中是可以引用到Insert方法的。

支持(0) 反对(0) lucika.zh | 园豆:62 (初学一级) | 2014-06-18 08:46
0

什么是 WEB站点添加

吴瑞祥 | 园豆:29449 (高人七级) | 2014-06-17 14:41

就是在项目中添加对类库的引用

支持(0) 反对(0) lucika.zh | 园豆:62 (初学一级) | 2014-06-17 16:14

@lucika.zh: 如果你是添加DLL引用那是可以的,如果你用C.不出来.你用A.看能不出来.

C出来A也是出不来的.这个就得找其它原因了.而不是继承的问题.如果C.不出来A却能.出来.你的论点就对了

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-06-17 16:27

@吴瑞祥: 我已经贴出代码了,谢谢!

支持(0) 反对(0) lucika.zh | 园豆:62 (初学一级) | 2014-06-17 17:24
0

三层架构中,如果你BLL 和DAL,UI界面的相互间引用没有弄好,你自己会看不出的,你贴的代码页有点乱,看不清楚问题所在。

李京阳 | 园豆:212 (菜鸟二级) | 2014-06-18 00:57

C.Hello是正常的,但C.Insert方法确实未定义。

如果结构是这样的:

public class A  { public static void Hello() { } } public class B:A{ } public class C:B{ }

C.Hello同样是可以使用的。唯一不同的是A类继承了泛型类Repository<UserProfileInfo>

支持(0) 反对(0) lucika.zh | 园豆:62 (初学一级) | 2014-06-18 08:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册