当前位置:编程学习 > asp >>

ASP.NET基础知识:简单的实例理解接口的伟大意义

首先,我们必须明确,接口是一个类。

 

“接口是一个特殊的类,又是一个特别有意义的类,不是因为它的特殊,而是因为它的意义,叫它接口更合适,但不能忘了,它仍是类。”

 

“接口是一个只有声明,没有实现的类。”

 

很多人纠结于接口只是一个标准,是一个契约,而忘记了它的意义。

 

下面我们来看这样一个问题:

话说有家影视公司选拔偶像派男主角,导演说了,男演员,身高是王道。于是有下面代码:

[csharp] public class Actor 

    private string name; 
    private int height; 
 
    public Actor(string name, int height) 
    { 
        this.name = name; 
        this.height = height; 
    } 
    public string Name 
    { 
        get { return this.name; } 
    } 
    public int Height 
    { 
        get { return this.height; } 
    } 
     
    public int CompareTo(object obj) 
    { 
        return this.height - ((Actor)obj).height; 
    } 
 
    public string GetName() 
    { 
        return this.name; 
    } 

public class Actor
{
    private string name;
    private int height;

    public Actor(string name, int height)
    {
        this.name = name;
        this.height = height;
    }
    public string Name
    {
        get { return this.name; }
    }
    public int Height
    {
        get { return this.height; }
    }
   
    public int CompareTo(object obj)
    {
        return this.height - ((Actor)obj).height;
    }

    public string GetName()
    {
        return this.name;
    }
}
 

 

这个类,除了可以存放男演员的基本信息,还定义了一个函数publicint CompareTo(object obj),因为,我们要比较男演员的身高,用身高判断哪个演员更好。

有了这个类,后面,你可以比较轻松地编写代码,判断是刘德华更优秀,还是潘长江更优秀了,这个代码,我这里就略过去了….
 

 

现在的问题是,明天又要选拨女演员了,导演说了,女演员,苗条是王道。女演员的这个类,你肯定是要做的,只是….

 

只是,我刚才略过去的,让你编写的代码,你是不是还要再重新编写呢????

 

这等于又重新编写了一个程序。

 

这时,我们就想到了接口,我们来接着看代码吧:

我先做一个接口,这个接口:

 

[csharp] namespace WestGarden.IPlayer 

    public inte易做图ce ISelectPlayer 
    { 
        string GetName(); 
 
        int CompareTo(object obj); 
    } 

namespace WestGarden.IPlayer
{
    public inte易做图ce ISelectPlayer
    {
        string GetName();

        int CompareTo(object obj);
    }
}
 

 

这个接口,定义了两个函数,一个,当然是要进行比较,标准由你定,你说是导演定的,那更好,不用你费脑子了。

 

我们把刚才做的男演员的类,按照这个接口的标准来实现,也就是继承这个接口:

[csharp] using System; 
 
using WestGarden.IPlayer; 
 
namespace WestGarden.DAL 

    public class Actor:ISelectPlayer 
    { 
        private string name; 
        private int height; 
 
        public Actor(string name, int height) 
        { 
            this.name = name; 
            this.height = height; 
        } 
        public string Name 
        { 
            get { return this.name; } 
        } 
        public int Height 
        { 
            get { return this.height; } 
        } 
        
        public int CompareTo(object obj) 
        { 
            return this.height - ((Actor)obj).height; 
        } 
 
        public string GetName() 
        { 
            return this.name; 
        } 
    } 

using System;

using WestGarden.IPlayer;

namespace WestGarden.DAL
{
    public class Actor:ISelectPlayer
    {
        private string name;
        private int height;

        public Actor(string name, int height)
        {
            this.name = name;
            this.height = height;
        }
        public string Name
        {
            get { return this.name; }
        }
        public int Height
        {
            get { return this.height; }
        }
      
   

补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,