运行下面这个程序有问题,不知怎么回事,是接口继承接口的问题。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Shaper
{
    interface Ilane
    {
        int R
        {
            get;
            set;
        }
        double area();
    }
    interface ISolid
    {
        int H
        {
            get;
            set;
        }
        void tiji();
    }
    public class CCircle :Ilane,ISolid
    {
        protected int r;
        protected int h;
        public int R
        {
            get { return r; }
            set { r = value; }
        }
        public int H
        {
            get { return h; }
            set { h = value; }
        }
        public double area()
        {            
            double s = 3.14 * r * r;
            return s;
        }
        public void tiji()
        {
        }
    }
    class CCylinder :  CCircle
    {
        new public void tiji()
        {
            double v = base.area() * base.H;
            Console.WriteLine("圆柱的体积为:" + v);
        }
    }
    class CCone: CCircle
    {
        new public void tiji()
        {
            double v = base.area() * base.H;
            Console.WriteLine("圆锥的体积为:" + v);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Ilane ile;
            CCircle cr = new CCircle();
            ile = (Ilane)cr;
            ile.R = 5;
            ISolid isl;
            CCylinder cyl = new CCylinder();
            isl = (ISolid)cyl;
            isl.H = 10;
            cyl.H = 10;
            isl.tiji();
            cyl.tiji();
            CCone coe = new CCone();
            isl = (ISolid)coe;
            isl.tiji();
            coe.H=10;
            coe.tiji();
            Console.WriteLine("圆的面积为:" + ile.area());
        }
    }
}运行后只有圆的面积,而没有圆柱与圆锥的体积,为什么?结果如下:
圆柱的体积为:0
圆锥的体积为:0
圆的面积为:78.5
请按任意键继续. . .怎样做才能解决让它显示出圆柱的体积和圆锥的体积

解决方案 »

  1.   

                Ilane ile;
                CCircle cr = new CCircle();
                ile = (Ilane)cr;
                ile.R = 5;
                ISolid isl;
                CCylinder cyl = new CCylinder();
                cyl.R = 1;
                isl = (ISolid)cyl;
                isl.H = 10;
                cyl.H = 10;
                isl.tiji();
                cyl.tiji();
                CCone coe = new CCone();
                coe.R = 1;
                isl = (ISolid)coe;
                isl.tiji();
                coe.H = 10;
                coe.tiji();
                Console.WriteLine("圆的面积为:" + ile.area());你相应的对象的半径r没有赋值,则其值为默认值0。