//此实例主要验证多个接口在类的中实现,及如果不覆盖object类的中tostring()方法,查看输出结果
//感觉这个接口的定义有点多余,没有什么用处,直接定义类不是更好吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace _5_8_5jiekoushili
{
    //定义一个求面积的接口
    interface GetMianJi
    {
        double MianJi
        {
            get;
        }
    }
    //定义一个求体积的接口
    interface GetTiJi
    {
        double TiJi
        {
            get;
        }
    }
    //声明一个圆面积的类
    class YuanMianJi:GetMianJi 
    {
        public YuanMianJi(double _bJing)
        {
            bJing = _bJing;
        }
        //声明一个圆的半径的变量
        private double bJing;
        public double MianJi
        {
            get
            {
                return (3.14159 * bJing * bJing);
            }
        }
        //重写object类的tostring()方法
        public override string ToString()
        {
            return ("圆的面积是:" + MianJi);
        }
    }
    //声明一个球面积和球体积的类
    class Qiu:GetMianJi ,GetTiJi 
    {
        private double bJing;
        public Qiu(double _bJing)
        {
            bJing = _bJing;
        }
        public double MianJi
        {
            get
            {
                return (3.14159 * bJing * bJing * 4);
            }
        }
        public double TiJi
        {
            get
            {
                return (3.14159 * bJing * bJing * bJing * 4 / 3);
            }
        }
        public override string ToString()
        {
            return ("球的面积:" + MianJi + ",球的体积:" + TiJi);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            YuanMianJi Y = new YuanMianJi(14.2);
            Qiu Q = new Qiu(16.8);
            Console.WriteLine(Y);
            Console.WriteLine(Q);
            Console.ReadLine();
        }
    }
}
原码附上,小弟在学接口这一块,感觉上面代码中定义的接口根本没有用,完全可以定义两个类来实现。如下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace _5_8_5jiekoushili
{
        //声明一个圆面积的类
    class YuanMianJi    //:GetMianJi 
    {
        public YuanMianJi(double _bJing)
        {
            bJing = _bJing;
        }
        //声明一个圆的半径的变量
        private double bJing;
        public double MianJi
        {
            get
            {
                return (3.14159 * bJing * bJing);
            }
        }
        //重写object类的tostring()方法
        public override string ToString()
        {
            return ("圆的面积是:" + MianJi);
        }
    }
    //声明一个球面积和球体积的类
    class Qiu  //:GetMianJi ,GetTiJi 
    {
        private double bJing;
        public Qiu(double _bJing)
        {
            bJing = _bJing;
        }
        public double MianJi
        {
            get
            {
                return (3.14159 * bJing * bJing * 4);
            }
        }
        public double TiJi
        {
            get
            {
                return (3.14159 * bJing * bJing * bJing * 4 / 3);
            }
        }
        public override string ToString()
        {
            return ("球的面积:" + MianJi + ",球的体积:" + TiJi);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            YuanMianJi Y = new YuanMianJi(14.2);
            Qiu Q = new Qiu(16.8);
            Console.WriteLine(Y);
            Console.WriteLine(Q);
            Console.ReadLine();
        }
    }
}求各位帮忙解释一下,接口在第一段代码中的作用,这样写代码有什么妙处,为什么不直接用第二段代码实现呢?

解决方案 »

  1.   

    “没有规矩,不成方圆”。接口是抽象出来的规范的东西,其他实现此接口的类都要遵守这个规范。比如定义了GetMianJi接口,在实现了此接口的类中,都必须遵守规范,同样的方法名和返回值类型等。重用性高、维护方面。会很快体会的到。再者,C#不支持多继承,但可以同时实现多个接口,因此为了单继承这一个宝贵名额,要尽可能的将其最基本的功能抽象出来定义为接口。