• C#基础入门 七


    C#基础入门 七

    接口

    • 由于C#语言不支持多重继承,所以可以使用接口模拟结构的继承,通过使用interface关键字,定义一个接口。
    interface USB
    {
    	void Read(string[] datas);
    }
    
    • 接口与抽象类非常类似,它定义了一些未实现的属性和方法,所有继承它的类都继承这些成员,在这个角度上,可以把接口理解为一个类的模板,接口最终的目的是起到统一的作用。
    • 实现接口的任何类或结构必须实现其所有成员的方法;
    • 接口不能直接实例化,但是可以通过指向子类间接实例化;
    • 接口可以包含方法和属性的声明,但不能包含字段;
    • 接口中所有方法、属性默认为public,不能在后面再添加修饰符;
    • 类或结构可以实现多个接口,类可以继承基类并实现一个或多个接口。
    • 抽象类除拥有抽象成员之外,还可以拥有非抽象成员;而接口所有的成员都是抽象的
    • 抽象成员可以是私有的,而接口成员默认是公有的
    • 接口中不能含有构造函数、析构函数、静态成员和常量
    • C#只支持单继承,即子类只能继承一个父类,而一个子类却能接受实现多个接口。

    练习

    • 计算球的表面积和体积
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace BallCalculation
    {
        interface  IArea
        {
            void Area();//计算球面积的方法
        }
        interface IVolume
        {
            void Volume();
        }
        public class BallCalculation : IArea, IVolume
        {
            public void Area()
            {
                Console.WriteLine("请输入球的半径");
                int r = Convert.ToInt16(Console.ReadLine());         
                double ar = 4 * Math.PI * r * r;
                Console.WriteLine("球表面积为{0}",ar);
            }
    
            public void Volume()
            {
                Console.WriteLine("请输入球的半径");
                int r = Convert.ToInt16(Console.ReadLine());
                double vol = Math.PI * r * r * r * 4 / 3;
                Console.WriteLine("球体积为{0}", vol);
              
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                BallCalculation ballcal = new BallCalculation();
                IArea iar = (IArea)ballcal;
                IVolume ivol = (IVolume)ballcal;
                iar.Area();
                ivol.Volume();
            }
        }
    }
    
    • 运行效果如下图所示:(图13)
  • 相关阅读:
    java上传视频文件
    java+HTML5实现断点续传
    web+上传大文件断点续传
    javaweb项目断点续传
    CKEditor从word粘贴问题
    netback的tasklet调度问题及网卡丢包的简单分析
    linux下开启ftp的21号port
    Dubbo--简单介绍
    OpenCV2马拉松第15圈——边缘检測(Laplace算子,LOG算子)
    【打CF,学算法——一星级】Codeforces Round #313 (Div. 2) A. Currency System in Geraldion
  • 原文地址:https://www.cnblogs.com/senlinmilelu/p/8447900.html
Copyright © 2020-2023  润新知