博主这几天正好闲着,砸砸基础,毕竟自学,基础不牢靠很致命,要踏实啊~~~

1.sealed关键字修饰一个类,也可以修饰实现方法或者属性。当sealed用于修饰一个类时,这个类不可以被继承,因此,这个类也叫做密封类。相对应的,被abstract修饰的类称为抽象类,这个类必须继承才有意义。

class Program
{
static void Main(string[] args)
{ }
} class Product
{
private string name;
public virtual void display()
{
Console.WriteLine("这是product类\n");
}
} sealed class Computer:Product
{
public Computer() { }
} /// <summary>
/// 将报错,因为继承的Computer为密封类
/// </summary>
//class Surface : Computer
//{ //} class Phone:Product
{
public Phone() { } public sealed override void display()
{
Console.WriteLine("这是Phone类的display,密封方法!");
}
} class WP:Phone
{
/// <summary>
/// 将报错,因为继承的Phone类中display为密封方法,无法重写
/// </summary>
//public sealed override void display()
//{ //}
}

Sealed修饰实例方法或属性,应该与override一起使用。

2.interface接口用于给使用者显示功能并使用,而不必知道其中的实现。当功能模块需要变更,程序狗只需要将该功能模块的实现代码进行修改,其他调用这个接口的程序将无需变动。接口的这种应用模式称之为Bridge模式,Bridge模式分离意图和实现,以得到更好的扩展性。

class Program
{
static void Main(string[] args)
{
Computer a = new PC();
Console.WriteLine("这台电脑的CPU为:{0}",a.getCPU());
Console.WriteLine("这台电脑的显卡为:{0}",a.Videocard); //报错,因为Computer接口的声明中Videocard为只读(没有set访问器)
//a.Videocard = Console.ReadLine(); PC b = new PC();
//实例b可以写入Videocard属性
b.Videocard = Console.ReadLine();
}
} interface Computer
{
string getCPU();
string Videocard
{
get;
}
} class PC:Computer
{
private string _vc = "Nvidia"; public string Videocard
{
get
{
return _vc;
}
set
{
_vc = value;
}
} public string getCPU()
{
return "Intel";
}
}

而且要补充一点,接口可以继承多个接口,但是类只能单继承。接口的访问权限是public,类或者结构实现接口的成员必须保持public,并且实现方法的签名必须和接口方法签名要一致。

.NET重思(一)sealed和interface的更多相关文章

  1. 焦大:SEO重思录(上)收录量和收录率的重新定位

    http://www.wocaoseo.com/thread-198-1-1.html 前一段焦大在seo前线就看到有人问为何我收录量很大但是流量很低呢?有时候几百万的收录量但是流量却只有1000不到 ...

  2. abstract、virtual、sealed、 interface、struct 基础知识整理

    abstract abstract 修饰符指示被修改内容的实现已丢失或不完整. abstract 修饰符可用于类.方法.属性.索引和事件. 在类声明中使用 abstract修饰符以指示某个类仅旨在作为 ...

  3. .NET重思(二)接口和抽象类的取舍

    不得不说,接口和抽象类好像啊~两者都不可以实例化,并且未实现的部分都是由派生类实现的. 他们主要有这么个区别: (1)抽象类的派生类可以是派生类,换言之,抽象成员在派生类中不一定完全实现,而接口要求其 ...

  4. .NET重思(三)-数组列表与数组的区别,栈集合和队列结合的区别

    数组列表和数组十分相似,区别在于数组列表的容量是可以动态变化的,而数组的容量是固定的.数组即Array类,数组列表即ArrayList类,两者十分相似.不过,Array类在System命名空间下,Ar ...

  5. Modifiers: virtual, override, new, abstract, sealed, internal

    internal 声明类.类成员.接口或接口成员具有内部可见性. internal 修饰符使类.接口或成员仅在当前包中可见. 当前包之外的代码不能访问 internal 成员.只有在同一程序集的文件中 ...

  6. [原创]AHA大会回顾

    AHA大会回顾 缘起 AHA之前参加了Daniel的培训,了解到AHA大会,觉得很高大上,开始有些心动.考虑到是工作时间,而且是外地,所以也就停留在心动层面了.之后与伯薇和四正吃饭,听说他们要去参加这 ...

  7. C#接口知识大全收藏

    第一节 接口慨述 接口(interface)用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).接口可以从多个基接口继承,而类或结构可 ...

  8. 《阿里巴巴Java工作手册》学习笔记

    最近浏览了一下阿里巴巴的Java开发手册,感觉内容确实非常的赞,发现了不少自己在编程中的误区,因此决定通过成文牢固掌握,文中将选取个人认为比较重要的部分进行描述与分析."愿站在巨人的肩膀上, ...

  9. C#的接口基础教程之五 实现接口

    1.显式实现接口成员 为了实现接口,类可以定义显式接口成员执行体(Explicit interface member implementations).显式接口成员执行体可以是一个方法.一个属性.一个 ...

随机推荐

  1. 一题多解(五) —— topK(数组中第 k 大/小的数)

    根据对称性,第 k 大和第 k 小,在实现上,是一致的,我们就以第 k 小为例,进行说明: 法 1 直接排序(sort(A, A+N)),当使用一般时间复杂度的排序算法时,其时间复杂度为 O(N2) ...

  2. 用决策树模型求解回归问题(regression tree)

    How do decision trees for regression work? 决策树模型既可以求解分类问题(对应的就是 classification tree),也即对应的目标值是类别型数据, ...

  3. 跟我学CMD实战系列之二 ——数据压缩备份

    需求:每天下班时,将本地硬盘上的projects目录压缩为rar文件,文件名中必须含有当天日期信息,例如projects_20070902.rar. 分析:1. 压缩可以调用WinRAR的命令行版本r ...

  4. Hibernate——(1)Hibernate入门

    一.Hibernate简介 1.Hibernate是一款ORM框架,Object Relation Mapping 对象关系映射. 2.可以将DB映射成Object,这样程序只要对Object对象进行 ...

  5. unity3D 4.6与上述号码. UI穿透问题,而且不穿透的真机模拟器渗透问题解决

    好久没有写博客颓废很长一段时间. . . 不废话. EventSystem.current.IsPointerOverGameObject(); //返回值true 如果是点击UI该.不过貌似没有使用 ...

  6. angular中通过$location获取路径(参数)的写法

    以下获取与修改的 URL 以  ( http://172.16.0.88:8100/#/homePage?id=10&a=100  ) 为例 [一]获取 (不修改URL) //1.获取当前完整 ...

  7. 将grub写入mbr

    现在习惯了开机启动的方法,所以我们把grub重新安装到硬盘的MBR上面. 这个步骤也有两种方法,一是安装grub4dos,然后启动,选中搜索硬盘上的linux引导文件,进入Linux之后再安装grub ...

  8. JDBC学习笔记——事务、存储过程以及批量处理

    1.事务                                                                                   1.1.事务的基本概念和使 ...

  9. img前置显示屏装load图片

    只需要设置img的background能够 <img src="" alt="" class="detailImg"  > cs ...

  10. mac系统下虚拟机parallels安装ubuntu 14.04

    mac系统很棒,mac下的开发环境也很棒,但有时你还得需要ubuntu开发环境,比如进行嵌入式Linux交叉编译,使用Linaro toolchain… 其实mac系统下使用parallels虚拟机安 ...