作者kisha024 (4545454554)
看板C_Sharp
标题[问题] interface的修饰词
时间Tue Aug 11 16:27:29 2015
各位好 如下一小段程式码
修饰词 interface Base
{ int P(); }
public class Derive : Base
{
public int P()
{ return 10;}
}
https://msdn.microsoft.com/zh-tw/library/ms173156%28v=vs.120%29.aspx
这里写 "介面成员会自动是公用的,因此,它们不能包含任何存取修饰词。"
所以int P(); 并没有任何修饰词
因为class Derive的修饰词是public 所以
我原本以为interface Base的修饰词也要是public才行
但我发现interface Base没有修饰词 或者修饰词是protected或private 也都不会出错
想请问 当interface的修饰词是protected或private 背後的涵义是什麽?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.127.81.14
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1439281655.A.5C0.html
1F:推 Litfal: 介面"成员"会自动是公用的 08/11 19:20
2F:→ Litfal: 原文: Interface "members" are automatically public, 08/11 19:21
3F:→ Litfal: 指的是介面里面的事件、索引子、方法和属性。 08/11 19:22
4F:推 Litfal: 而你指的 public interface,则是interface本身的存取范围 08/11 19:24
谢谢 我知道 但我想问的是 譬如底下这样写不会错
private interface Base
{ int P(); }
public class Derive : Base
{
public int P()
{ return 10; }
}
但是 如果interface换成class 如下 就会出错
private class Base
{ }
public class Derive : Base
{ }
5F:推 wulouise: 除了class里面的class, C#好像不给人用private class吧? 08/15 18:20
6F:推 Litfal: 由於子类别会"继承"父类别的成员,能访问子类别,代表能访 08/18 01:11
7F:→ Litfal: 问其所继承的父类别,但若你父类别存取权限比较小,不就出 08/18 01:13
8F:→ Litfal: 现矛盾了? 08/18 01:14
对啊 所以interface换成class 会出错是预料中的事
同理 我觉得interface也会出错 但却不是这样
interface反而不会出错 我想问的正是这个
※ 编辑: kisha024 (140.127.81.14), 08/19/2015 17:53:01
9F:推 Litfal: interface不会出错是因为class并不依赖於interface阿 08/29 02:36
10F:→ Litfal: 而子类别是依赖於父类别的 08/29 02:37