zoukankan      html  css  js  c++  java
  • C#抽象类和接口

    抽象类和接口有什么区别?有了抽象类为什么还要接口?

    接口和抽象类的相同点是都不能实例化,不同点是接口中的方法都没有方法体,而抽象类则不然,除了抽象方法没有方法体外,其他方法都有方法体。

    原因是:在C#中,类只能继承一个类,但可继承多个接口。

    抽象类:

    1、不能实例化

    2、抽象方法必须被子类重写

    3、如果类中包含有抽象方法,该类必须定义为抽象类

    抽象类前加abstract。

    抽象方法在返回值前加abstract,没有方法体,直接在括号后加分号。

    1、包含有抽象方法的类一定为抽象类

    2、抽象类不一定包含抽象方法

    虚方法是用来实现多态的,为了使子类的实例完全接替来自父类的成员,父类必须将该成员声明为虚拟的,这是通过在该成员的访问类型前加virtual关键字来实现的。

    子类可以选择使用override关键字将父类实现替换为它自己的实现,这就是方法重写,当然也可以不重写。

    class Animal
    {
        public virtual void Shout()
        {
            Console.WriteLine("动物叫!");
        }
    }
    class Cat:Animal
    {
        public override void Shout()
        {
            Console.WriteLine("猫叫!");
        }
    }
    class Dog: Animal
    {
        public override void Shout()
        {
            Console.WriteLine("狗叫!");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Animal[] animals=new Animal[2];
            animals[0]=new Cat();
            animals[1]=new Dog();
            foreach (var animal in animals)
            {
                animal.Shout();
            }
            Console.ReadLine();
        }
    }
  • 相关阅读:
    关于近期
    Tips on Importons and Irradiance Particles in mental ray
    给她的歌
    Fatal In Code Generation Of Visual C++
    kdtree vs octree
    疯子的胜利——记6.18毕业晚会
    转凉
    事件与委托的匿名方法使用方法示例
    VS2008使用技巧
    硬链接和软连接的区别
  • 原文地址:https://www.cnblogs.com/NaughtyBaby/p/4313388.html
Copyright © 2011-2022 走看看