您的位置:首页 > 编程语言 > C#

C#基础-----抽象类实现多态

2015-06-09 15:12 351 查看
什么是抽象类:光说不做,不能被实例化的类

抽象类的特点:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: