.NET重思(一)sealed和interface
博主这几天正好闲着,砸砸基础,毕竟自学,基础不牢靠很致命,要踏实啊~~~
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的更多相关文章
- 焦大:SEO重思录(上)收录量和收录率的重新定位
http://www.wocaoseo.com/thread-198-1-1.html 前一段焦大在seo前线就看到有人问为何我收录量很大但是流量很低呢?有时候几百万的收录量但是流量却只有1000不到 ...
- abstract、virtual、sealed、 interface、struct 基础知识整理
abstract abstract 修饰符指示被修改内容的实现已丢失或不完整. abstract 修饰符可用于类.方法.属性.索引和事件. 在类声明中使用 abstract修饰符以指示某个类仅旨在作为 ...
- .NET重思(二)接口和抽象类的取舍
不得不说,接口和抽象类好像啊~两者都不可以实例化,并且未实现的部分都是由派生类实现的. 他们主要有这么个区别: (1)抽象类的派生类可以是派生类,换言之,抽象成员在派生类中不一定完全实现,而接口要求其 ...
- .NET重思(三)-数组列表与数组的区别,栈集合和队列结合的区别
数组列表和数组十分相似,区别在于数组列表的容量是可以动态变化的,而数组的容量是固定的.数组即Array类,数组列表即ArrayList类,两者十分相似.不过,Array类在System命名空间下,Ar ...
- Modifiers: virtual, override, new, abstract, sealed, internal
internal 声明类.类成员.接口或接口成员具有内部可见性. internal 修饰符使类.接口或成员仅在当前包中可见. 当前包之外的代码不能访问 internal 成员.只有在同一程序集的文件中 ...
- [原创]AHA大会回顾
AHA大会回顾 缘起 AHA之前参加了Daniel的培训,了解到AHA大会,觉得很高大上,开始有些心动.考虑到是工作时间,而且是外地,所以也就停留在心动层面了.之后与伯薇和四正吃饭,听说他们要去参加这 ...
- C#接口知识大全收藏
第一节 接口慨述 接口(interface)用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).接口可以从多个基接口继承,而类或结构可 ...
- 《阿里巴巴Java工作手册》学习笔记
最近浏览了一下阿里巴巴的Java开发手册,感觉内容确实非常的赞,发现了不少自己在编程中的误区,因此决定通过成文牢固掌握,文中将选取个人认为比较重要的部分进行描述与分析."愿站在巨人的肩膀上, ...
- C#的接口基础教程之五 实现接口
1.显式实现接口成员 为了实现接口,类可以定义显式接口成员执行体(Explicit interface member implementations).显式接口成员执行体可以是一个方法.一个属性.一个 ...
随机推荐
- 学习鸟哥的Linux私房菜笔记(8)——文件查找与文件管理2
四.压缩 gzip, gunzip Linux标准压缩工具 对文本文件可以达到75%的压缩率 compress, uncompress 旧的Unix压缩工具 bzip2, bunzip2 更新的Lin ...
- 自定义view布局过程详解
布局过程,就是程序在运行时利用布局文件的代码来计算出实际尺寸的过程. 布局分为两个阶段:测量阶段和布局阶段. 测量阶段:从上到下递归地调用每个 View 或者 ViewGroup 的 measure( ...
- Asp.net压缩网站中的文件
为了说明自定义虚拟路径,这里弄个示例,仅仅用一个压缩包存放一个网站的多个文件. 这个东西是要需要通过实现3个抽象类来实现: System.Web.Hosting.VirtualPathProvider ...
- [02]基于webservice权限系统
面前,我们已经介绍过.如何使用cxf建立webservice. 那我们要介绍的这款许可制度表结构. 此权限管理系统分为部门管理.员工管理.角色管理,权限管理,授权的人才和企业管理(这里不涉及) 角色管 ...
- Android Studio 使用教程(二十五)之运行Android Studio工程
一.Android虚拟设备入口 上期我们使用了Android Studio创建了HeloWorld工程,要想运行该工程,首先需要一个Android虚拟设备来模拟Android程序的运行. 重新打开An ...
- CSRF的攻击与防御
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站 ...
- Java 联系Oracle 数据库
一般完成 import oracle.jdbc.driver.*; 会后声明,你会发现一个错误.然后,你需要: 一.该JDBC开车到classpath 两种方法.一是图形化,计算机-属性-高级设置-环 ...
- SQL SERVER配置[转]
感谢shuhao,sql server的配置都是他教的,下面是他写的总结,方便自己以后使用 总结一下,感觉比较实用.------------------------------------------ ...
- 机器学习:scikit-learn 做笑脸识别 (SVM, KNN, Logisitc regression)
scikit-learn 是 Python 非常强大的一个做机器学习的包,今天介绍scikit-learn 里几个常用的分类器 SVM, KNN 和 logistic regression,用来做笑脸 ...
- C#或者WPF中让某个窗体置顶
原文:C#或者WPF中让某个窗体置顶 前记:在工作中有个需求,要求不管到那个界面,我必须让一个浮动条(其实是个窗体)置顶. 我用wpf,因为有之前有好几个界面已经设置成topmost了,所以在这几个界 ...