C#基础-----抽象类实现多态
2015-06-09 15:12
351 查看
什么是抽象类:光说不做,不能被实例化的类
抽象类的特点:
1,需要用abstract关键字标记
2,抽象方法不能有任何方法实现,所以没有方法体
3,抽象成员必须包含在抽象类中
4,由于抽象成员没有任何实现,所以子类必须将抽象成员重写。
5,抽象类不能实例化,抽象成员不能是私有的。
6,抽象类中可以包括抽象成员,可以包括有具体代码的成员
7,抽象方法不能被static修饰
publicabstractvoidShowNationality();
抽象类的作用:就是为了让子类继承。
抽象类的意义:
1,抽象类不能被实例化,只能被继承
2,继承抽象类的子类必须把抽象类中的所有抽象成员都重写(除非子类也是抽象类)
3,抽象类就是为了重写(代码重用)
4,抽象类中可以有实例成员也可以有抽象成员
抽象类定义的是公共的实现和能力
抽象类为子类提供所需要的成员
抽象类中的成员既可以有实现(实例成员)也可以无实现(抽象成员)
一个类只能继承一个抽象类(类的单根继承性)
抽象方法(成员)的只能出现在抽象类中。
虚方法和抽象方法的区别
1)虚方法必须有实现,抽象方法必须没有实现
2)抽象方法必须在抽象类中声明,虚方法可以出现在抽象类中
3)抽象方法必须在子类中重写,虚方法可以被重写
抽象类实现多态
抽象类的特点:
1,需要用abstract关键字标记
2,抽象方法不能有任何方法实现,所以没有方法体
3,抽象成员必须包含在抽象类中
4,由于抽象成员没有任何实现,所以子类必须将抽象成员重写。
5,抽象类不能实例化,抽象成员不能是私有的。
6,抽象类中可以包括抽象成员,可以包括有具体代码的成员
7,抽象方法不能被static修饰
publicabstractvoidShowNationality();
抽象类的作用:就是为了让子类继承。
抽象类的意义:
1,抽象类不能被实例化,只能被继承
2,继承抽象类的子类必须把抽象类中的所有抽象成员都重写(除非子类也是抽象类)
3,抽象类就是为了重写(代码重用)
4,抽象类中可以有实例成员也可以有抽象成员
抽象类定义的是公共的实现和能力
抽象类为子类提供所需要的成员
抽象类中的成员既可以有实现(实例成员)也可以无实现(抽象成员)
一个类只能继承一个抽象类(类的单根继承性)
抽象方法(成员)的只能出现在抽象类中。
虚方法和抽象方法的区别
1)虚方法必须有实现,抽象方法必须没有实现
2)抽象方法必须在抽象类中声明,虚方法可以出现在抽象类中
3)抽象方法必须在子类中重写,虚方法可以被重写
抽象类实现多态
class Program { static void Main(string[] args) { Person p = new American();//new Chinese(); p.Show(); p.SayHi(); Console.ReadKey(); } } #region 使用抽象方法abstract来实现多态 public abstract class Person { public static string Email; private string _name; public string Name { get { return _name; } set { _name = value; } } private int _age; public int Age { get { return _age; } set { _age = value; } } public abstract void Show();
public abstract void SayHi(); }
//子类继承Person类 public class Chinese : Person { public override void Show() { Console.WriteLine("Show in Chinese"); } public override void SayHi() { Console.WriteLine("SayHi in Chinese."); } } public class American : Person { public override void Show() { Console.WriteLine("Show in American"); } public override void SayHi() { Console.WriteLine("SayHi in American"); } } #endregion
相关文章推荐
- C#中数组、ArrayList和List三者的区别
- C#禁止重复提交
- C#基础-----虚方法实现多态
- C#隐式运行CMD命令
- C#工具箱Menustrip控件中分割线的设置方法
- C# CHART控件的相关操作备忘
- c#语法总结1
- C#进阶ADO.NET基础三 案例:登录框、导入文档、省市联动
- C#中this用法汇总
- C#索引器
- 利用C#特性优化AMF反序列化类
- c#用for语句输出一个三角形的方法
- 浅谈c#中const与readonly区别
- C#趣味程序---水仙花数
- C#创建和调用WebService详细教程
- C#实现百分比转小数的方法
- C# 多线程编程,传参,接受返回值
- C# 邮箱mail 发送类
- C#中 As 和强制转换的总结
- C# 中利用 Conditional 定义条件方法