zoukankan      html  css  js  c++  java
  • 接口

    //接口
        
    //    接口与抽象类有些相似,因为它们都提供了用来创建新类的模板.它们之间的不同在于接口不提供任何实现的
        
    //类成员,而抽象类可以实现派生类共用的成员.
        
    //    比起类而言,接口更像类型.当您在一个类中实现某个特定的接口时,这个类的实例可以用于被声明为该接口的
        
    //参数或变量.
        
    //例如下面的代码为前面创建的Shape对象声明了一个接口.

    using System;



    namespace FlashCards
    {

        
    public interface IFigure
        
    {
            
    float Top
            
    {
                
    get;
                
    set;

            }

        
            
    float Left
            
    {
                
    get;
                
    set;
            }

            
    float Area();
            
    float Perimeter();
        }


        
    /// <summary>
        
    /// 使用这个接口前,需要在下面的类中实现它
        
    /// </summary>

        public abstract class Shape:IFigure
        
    {
            
    public Shape()
            
    {
                
    //
                
    // TODO: 在此处添加构造函数逻辑
                
    //
            }

            
    IFigure 成员
        }


    //覆盖抽象类成员的每一个成员定义都需要 Overrides(vb.net) 或 override(c#)  关键字.
        public class CirCle:Shape
        
    {
            
    float fxCenter,fyCenter,fRadius;
            
    public CirCle()
            
    {
                fxCenter
    =0;
                fyCenter
    =0;
                fRadius
    =0;

            }


            
    public override float Top
            
    {
                
    get{return fxCenter-fRadius;} //fx
                set{fxCenter=value+fRadius;}

            }

            
    public override float Left
            
    {
                
    get{return fyCenter-fRadius;} //fy
                set{fyCenter=value+fRadius;}
            }


            
    public override float Area()
            
    {
                
    return (float)(2*System.Math.PI *Math.Pow((double)fRadius,2  ));
                
            }

            
    public override float Perimeter()
            
    {
                
    return 2*fRadius*(float)System.Math.PI; 
            }


            
    public float Radius
            
    {
                
    get{return fRadius;}
                
    set{fRadius=value;}
            }
     

            
    public virtual void Center(float x,float y)
            
    {
                fxCenter
    =x;
                fyCenter
    =y;
            }

        }


        
    public class Sphere:CirCle //球体,圆
        {
          
    float fCenter;
            
    public Sphere()
            
    {
                fCenter
    =0;
            }

            
    public override float Area()
            
    {
                
    return (float)(4*Math.PI *Math.Pow((double)base.Radius ,2) );  //圆的面积

            }

            
    public new void Center(float x,float y)
            
    {
                
    this.Center (x,y,0);
                
            }

            
    public void Center(float x,float y,float z)
            
    {
                
    base.Center(x,y) ;
                fCenter
    =z;
            }

            
    public float Volume()  //体积
            {
                
    return (float)((4/3)*System.Math.PI*Math.Pow((double)base.Radius,3));
            }

                     
            
    public float Front
            
    {
                
    get{return fCenter-base.Radius ;}
                
    set{fCenter=value+base.Radius ;}

            }

        }



    }




    //    这个示例中的Shape抽象类实现了IFigure接口,所有从Shape派生而来的类都继承了实现的IFigure.
            
    //这就是说,类型CirCle和Sphere的对象是从Shape派生而来,它们能被用作IFigure类型的参数.
            
    //    这里的关键是接口中定义的所有项必定存在于实现该接口的类中 .如果您省略了某个成员,Visual Studio
            
    //将产生一个编译时错误.
            private void Button4_Click(object sender, System.EventArgs e)
            
    {
                
    //创建一个圆
                CirCle myCircle=new CirCle();
                myCircle.Radius 
    =2;
                myCircle.Center(
    10,2);
                
    //创建一个球体
                Sphere mySphere=new Sphere();
                mySphere.Radius 
    =10;
                mySphere.Center(
    10,20,25) ;
                
    //显示每一种形状的相关信息
                ShowShapeInfo(mySphere);
                ShowShapeInfo(myCircle);

            
            }


            
    private void ShowShapeInfo(IFigure Shape)
            
    {
                
    //因为Shape参数是IFigure,我们知道它有这些成员
                Response.Write("Shape    Top   :"+Shape.Top +"<br>" ) ;
                Response.Write(
    "         Left  :"+Shape.Left +"<br>" ) ;
                Response.Write(
    "         Area  : "+Shape.Area()+ "<br>" ) ;
                Response.Write(
    "         perimeter      : "+Shape.Perimeter() +"<br>" ) ;

            }

        }
    //输出
    Shape Top :0
    Left :10
    Area : 1256.637
    perimeter : 62.83186
    Shape Top :8
    Left :0
    Area : 25.13274
    perimeter : 12.56637
  • 相关阅读:
    一个小时前,美国主流媒体,头条,谷歌两位创始人突然宣布退下来,把万亿美元的帝国交给Sundar Pichai
    Fox新闻报道,帮助北朝鲜使用加密货币专家被捕
    看新闻,说墨西哥政府发起了一个军事行动,抓住了11月杀死9位美国人的三名嫌疑犯
    黑五千万不要去商场,就像打仗一样。
    Facebook 一个热搜帖,美国一个老人癌症不治最后的心愿是跟儿子喝啤酒。
    这周末又参加班里同学生日party,同学父母包场2小时花费大约1000美金左右。
    Google谷歌总部员工家庭活动
    800年没有写博客了,今天重新开始。
    iOS image processing with the accelerate framework(透明玻璃效果)
    Custom View Controller Transitions and Storyboard
  • 原文地址:https://www.cnblogs.com/furenjun/p/318418.html
Copyright © 2011-2022 走看看