抽象类和接口

namespace OODemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //接口类型的变量,要以实现了该接口的类的对象赋值,以哪个接口声明的变量,只能调用本接口上声明的成员。
            IWeapon t = new Tank();
            t.Fire();
            t.Play();
            //不能调用IWheicle上定义的成员
            //t.Run();

            IWheicle r = new Tank();
            r.Run();
            r.Play();
            //这个不能调用
            //r.Fire();
        }
    }
}

namespace OODemo
{
    //接口是纯抽像类,不能有任何实例成员,接口的成员是方法的声明
    public interface IWeapon
    {
        //接口成员天生就是public,所以加public关键字就会报错
        void Fire();
        void Play();
    }

    public interface IWheicle
    {
        void Run();
        void Play();
    }
    //实现接口的类必须实现接口成员
    public class Gun : IWeapon
    {
        public void Fire()
        {
            throw new NotImplementedException();
        }

        public void Play()
        {
            throw new NotImplementedException();
        }
    }

    public class Sowrd : IWeapon
    {
        public void Fire()
        {
            throw new NotImplementedException();
        }

        public void Play()
        {
            throw new NotImplementedException();
        }
    }

    public class Tank : IWeapon, IWheicle
    {
        public void Fire()
        {
            Console.WriteLine("亚瑟,程咬金");
        }
//对于两个接口都定义了的成员,要显式的实现就是加接口名前缀(接口点出来方法名来)。 void IWeapon.Play() { Console.WriteLine("鸣礼炮"); } public void Run() { Console.WriteLine("穿山越岭"); } void IWheicle.Play() { Console.WriteLine("脚踏车"); } } }

接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可

继承实体类(concrete class)?

答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承实体类,

但前提是实体类必须有明确的构造函数。

1.接口可以实现多态,能降低类与类之间的耦合度,接口和抽象类一样具有稳定性不能轻易改变。

2.接口是纯抽像类,不能有任何实例成员,接口的成员是方法的声明,
实现接口的类必须实现接口成员,接口成员天生就是public所以加public关键字就会报错。

3.接口类型的变量,要以实现了这个接口的类的对象赋值,只能调用本接口上声明的成员,
对于两个接口都定义了的成员,要显式的实现就是接口点出来方法名来。

原文地址:https://www.cnblogs.com/Tianxf815/p/8807196.html