顶部468*60ad 顶部468*60ad 顶部468*60ad 顶部468*60ad

ASP.NET教程:抽象类和接口的比较

2007-12-17 18:41:53  来源:CSDN NETZHOU

4.2 别样小菜

下面的实例,因为是我的理解,因此给经典打上“相对”的记号,至于什么时候晋升为“绝对”,就看我在.NET追求的路上,是否能够一如既往的如此执着,因此我将把相对重构到绝对为止(呵呵)。 本示例没有阐述抽象类和接口在设计模式中的应用,因为那将是另一篇有讨论价值的文本,本文着眼与概念和原则的把握,但是真正的应用来自于具体的需求规范。

Webjx.Com

设计结构如图所示:

ASP.NET教程:抽象类和接口的比较_网页教学网webjx.com整理

网页教学网

1. 定义抽象类

网页教学网

以下为引用的内容:
public abstract class Animal
{
    protected string _name;

    //声明抽象属性
    public abstract string Name
    {
        get;
    } Webjx.Com

    //声明抽象方法
    public abstract void Show();

    //实现一般方法
    public void MakeVoice()
    {
        Console.WriteLine("All animals can make voice!");
    }
}

Webjx.Com

2. 定义接口

以下为引用的内容:
public interface IAction
{
    //定义公共方法标签
    void Move();
}

3. 实现抽象类和接口

Webjx.Com

以下为引用的内容:
public class Duck : Animal, IAction
{
    public Duck(string name)
    {
        _name = name;
    }

    //重载抽象方法
    public override void Show()
    {
        Console.WriteLine(_name + " is showing for you.");
    }

    //重载抽象属性
    public override string Name
    {
        get { return _name;}
    } 网页教学网

    //实现接口方法
    public void Move()
    {
        Console.WriteLine("Duck also can swim.");
    }

}

网页教学网

public class Dog : Animal, IAction
{
    public Dog(string name)
    {
        _name = name;
    }

    public override void Show()
    {
        Console.WriteLine(_name + " is showing for you.");
    }

    public override string Name
    {
        get { return _name; }
    }

    public void Move()
    {
        Console.WriteLine(_name + " also can run.");
    }

} Webjx.Com

网页教学网

文章评论

共有 0 位网友发表了评论 查看完整内容

推荐文章