C#多态实现之抽象类
来源:互联网 发布:php中文网站模板下载 编辑:程序博客网 时间:2024/06/07 12:10
示例:
控制台应用程序中,“Program.cs”类文件中源码:
定义抽象类关键字:abstract
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _02抽象方法实现多态{ //3种方法实现多态之抽象类 //virtual,子类重写父类中的方法。 //abstract,子类重写父类中的方法。 //接口,实现接口的类,将接口中的方法实现。 //做网站的公司(抽象类) 你给我活我去开发网站,但是网站需要一部分flash,我公司力都是程序员(抽象类中有实现的方法)。 //没人会做flash(抽象方法),于是我把做flash这部分工作给其它公司去做(重写抽象方法的类) //多态性的含义:使得能够利用基类的指针来引用不同子类的对象,以及根据所引用对象的不同,以不同的方式执行相同的操作。 //多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。(多态) //如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,采用虚方法来实现多态; //如果父类中没有默认实现,父类也不需要被实例化,则可将该类定义为抽象类。 //主程序 class Program { static void Main(string[] args) { Chinese cn = new Chinese(); cn.Show(); Console.ReadKey(); //**抽象类是不能被实例化的。(抽象类的作用就是为了让继承。)** //Person p = new Person(); } } //1.这个类也必须标记为abstract(抽象)的。 //2.抽象成员必须写在抽象类中。不能写在一个实例中。 //3.抽象类中一定有构造函数。虽然不能被实例化 public abstract class Person { //4.在抽象类中可以包含实例化成员 public string Name { get; set; } //5.可以包含抽象方法、属性、索引器、事件。【这几个最终都是方法】 //6.Age为抽象属性,没有任何实现,区别于自动属性Name public abstract int Age { get; set; } public void SayHi() { Console.WriteLine("我不抽象...."); } //7.抽象方法不能有任何方法体。(不能有任何实现 {这里面的内容} ) //8.抽象成员不能是private public abstract void Show(); //{ //} } public class Chinese : Person { //9.父类中的抽象成员,子类继承以后必须重写所有抽象成员(例外:除非子类也是一个抽象类。) public override int Age { get { throw new NotImplementedException(); } set { throw new NotImplementedException(); } } public override void Show() { Console.WriteLine("我是中国人!!"); } } public abstract class Japanese : Person { //抽象类中,可以不对父类的抽象方法、抽象属性进行重写 }}
输出结果如下:
- C#多态实现之抽象类
- C#基础-----抽象类实现多态
- c#多态之抽象类
- C#面向对象 多态的实现之 - 虚方法和抽象类:
- C#之抽象类
- C#之抽象类
- C#多态的实现:虚方法、抽象类、接口
- C#实现多态之一抽象
- C#初识7 多态之抽象类(abstract override)
- C#之抽象类和抽象方法
- c#之抽象类, 接口
- C#基础知识之抽象类
- 抽象类实现多态
- 多态之抽象类
- C#学习笔记之多态之抽象类
- C# 适应虚函数,抽象类,接口分别实现多态的方法总结。
- C#学习第十一天 实现多态:虚方法、抽象类
- C# 之 抽象类与接口
- 创建与Android wifi兼容的adhoc网络
- C#控件缩写
- 用户抛弃你的网站的10条原因
- VB.net学习笔记(三)调试
- 保存学生信息到文件(数组内元素排序, io操作)
- C#多态实现之抽象类
- POJ 1027 The Same Game 模拟题
- 处理百万级以上的数据查询提高效率的办法
- 网络编程之recv send研究
- Codeforces Round #192 (Div. 2) (330A) A. Cakeminator
- 对Git的一些理解
- 【图论】bfs树与dfs树的两个妙用
- Spring学习之——依赖关系和配置细节(一)
- cell组件注册码