接口特点(最基础)

本文介绍了接口的基本概念,包括其作为规范的作用、实现机制以及多态性。探讨了接口与类的区别,如何在不同场景下使用接口,以及通过具体示例展示了接口在实际编程中的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口是一种能力,也是一种规范。

只要一个类继承了一个接口,这个类就必须实现这个接口中所有的成员

接口的功能要单一
为了多态。
接口不能被实例化。
也就是说,接口不能new(不能创建对象)
跟抽象类是一样的,因为创建对象也没意义。




接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符为public,不能修改。
类中的成员默认的访问修饰符是private ,而接口中默认的访问修饰符是public


(默认为public)
接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)。






接口中只能有方法、属性、索引器、事件,不能有“字段”和构造函数。


接口与接口之间可以继承 


接口并不能去继承一个类,而类可以继承接口  (接口只能继承于接口,而类既可以继承接口,也可以继承类)




实现接口的子类必须实现该接口的全部成员。




一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须写在IA的前面。




class MyClass:A,IA{},因为类是单继承的。










显示实现接口的目的:解决方法的重名问题
什么时候显示的去实现接口:
当继承的接口中的方法和参数一摸一样的时候,要是用显示的实现接口






当一个抽象类实现接口的时候,需要子类去实现接口。


例子1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace 接口
{
    class Program
    {
        static void Main(string[] args)
        {
            Student s1 = new Student();
            s1.CHLSS();
            s1.koulan();
            Teacher t1 = new Teacher();
            t1.CHLSS();
            t1.koulan();
            Console.ReadKey();
        }
    }
    class Peson
    {
        public void CHLSS()
        {
            Console.WriteLine("人类可以吃喝拉萨睡");
        }
    }
    class Student : Peson ,Ikoulan//学生想吃喝 还想扣篮   可是不能继承两个类  因此把扣篮做成接口
    {
        public void koulan()
        {
            Console.WriteLine("学生可以扣篮");
        }
    }
    class Teacher : Peson, Ikoulan//学生想吃喝 还想扣篮   可是不能继承两个类  因此把扣篮做成接口
    {
        public void koulan()
        {
            Console.WriteLine("老师可以扣篮");
        }
    }
    interface Ikoulan
    {
        void koulan();
    }
    class NBAPlayer : Peson
    {
        public void koulan()
        {
            Console.WriteLine("NBA球员可以扣篮");
        }
    }
}




例子2

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace 接口2
{
    class Program
    {
        static void Main(string[] args)
        {
            IFly[] flys = { new MaBird(),new YingwuBird(),new Plame()};
            foreach (IFly i in flys)
            {
                i.Fly();
            }
            Console.ReadKey();
        }
    }
    class Bird//父类 存储共性属性
    {
        public void CHLSS()
        {
            Console.WriteLine("Bird can 吃喝拉撒水");
        }
    }
    interface IFly
    {
        void Fly();
    }
    class MaBird : Bird, IFly
    {
        public void Fly() 
        {
            Console.WriteLine("MaBird can fly");
        }
    }
    class TuoBird : Bird
    {
 
    }
    class YingwuBird : Bird, IFly
    {
        public void Fly()
        {
            Console.WriteLine("YingwuBird can fly");
        }
    }
    class Plame : IFly
    {
        public void Fly()
        {
            Console.WriteLine("Plame can fly");
        }
    }
}

例3

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace _15接口登记案例
{
    class Program
    {
        static void Main(string[] args)
        {
            //Person需要登记
            //House房子也需要登记
            //汽车也需要登记
            //财产登记


            //最后写一个函数 来实现以上物品的登记


            DengJi(new Person());
            DengJi(new House());
            DengJi(new Car());
            DengJi(new Money());
            Console.ReadKey();
        }


        static void DengJi(IDengJi dj)
        {
            dj.DengJi();
        }


    }


    interface IDengJi
    {
        void DengJi();
    }
    class Person : IDengJi
    {
        public void DengJi()
        {
            Console.WriteLine("人出生就要登记");
        }
    }


    class House : IDengJi
    {
        public void DengJi()
        {
            Console.WriteLine("买房子也要登记");
        }
    }




    class Car : IDengJi
    {
        public void DengJi()
        {
            Console.WriteLine("买汽车也要登记");
        }
    }


    class Money : IDengJi
    {
        public void DengJi()
        {
            Console.WriteLine("财产也要登记");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值