当前位置: 首页 > 面试题库 >

C#中 abstract class和interface有什么区别?

公西志文
2023-03-14
本文向大家介绍C#中 abstract class和interface有什么区别?相关面试题,主要包含被问及C#中 abstract class和interface有什么区别?时的应答技巧和注意事项,需要的朋友参考一下

答:

abstract class abstract 声明抽象类抽象方法,一个类中有抽象方法,那么这个类就是抽象类了。所谓的抽象方法,就是不含主体(不提供实现方法),必须由继承者重写。因此,抽象类不可实例化,只能通过继承被子类重写。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    public abstract class Bus
    {
        public abstract void getName();  //抽象方法
        public virtual void getTypes() //虚方法
        {
            Console.WriteLine("bus");
        }
        public void getID()//一般方法,若在派生类中重写,须使用new关键字
        {
            Console.WriteLine("沪A 00000");
        }
    }
    public class car : Bus
    {
        public override void getName() //继承抽象类,重新抽象方法
        {
            Console.WriteLine("奥迪");
        }
        public override void getTypes()//继承抽象类,重新虚方法
        {
            Console.WriteLine("car");
        }
    }
    class Program
    {
       
        static void Main(string[] args)
        {
            car mycar = new car();
            mycar.getName();
            mycar.getTypes();
            mycar.getID();
        }    
    }
 }

输出: 奥迪 car 沪A 00000

interface 声明接口,只提供一些方法规约,不提供任何实现;不能用public、abstract等修饰,无字段、常量,无构造函数

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    public interface IBus
    {
        void getTypes();
    }
    public interface IPlane
    {
        void getfunc();
    }
    public class Car : IBus,IPlane
    {
        
        public void getTypes()
        {
            Console.WriteLine("car");
        }
        public void getfunc()
        {
            Console.WriteLine("fly");
        }
    }
    class Program
    {
       
        static void Main(string[] args)
        {
            Car  mycar = new Car ();
            mycar.getTypes();
            mycar.getfunc();
        }    
    }
}

输出结果: car fly

两者区别

1.interface中不能有字段,而abstract class可以有; 2.interface中不能有public等修饰符,而abstract class 可以有。 3.interface 可以实现多继承

 

 类似资料:
  • 问题内容: 自从90年代末在大学期间使用JBuilder以来,我从未接触过Java,所以我有点脱节-无论如何我本周一直在从事一个小型Java项目,并使用Intellij IDEA作为我的IDE ,以便与我的常规.Net开发有所不同。 我注意到它支持添加接口和@interface,什么是@interface,它与普通接口有何不同? 与 我已经做了一些搜索,但找不到大量有用的有关@interface的

  • 本文向大家介绍interface 和 type 到底有什么区别?相关面试题,主要包含被问及interface 和 type 到底有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 interface 和 type 到底有什么区别? 作者:rottenpen

  • type 和 interface 都可以定义对象,二者到底有何区别?

  • 本文向大家介绍C#和 .NET有什么区别相关面试题,主要包含被问及C#和 .NET有什么区别时的应答技巧和注意事项,需要的朋友参考一下 答:.NET一般指 .NET FrameWork框架,它是一种平台,一种技术。

  • 本文向大家介绍C#中的IEnumerable和IQueryable有什么区别?,包括了C#中的IEnumerable和IQueryable有什么区别?的使用技巧和注意事项,需要的朋友参考一下 IEnumerable存在于System.Collections命名空间中。 IQueryable存在于系统中。Linq命名空间。 IEnumerable和IQueryable都是正向收集。 IEnumera

  • 问题内容: 当我遇到Joel Spolsky的时候,我正在阅读《更多关于软件的 Joel》,他说了一种有关特定类型的程序员的一些知识,他们知道Java / C#(面向对象编程语言)中an int和an 之间的区别Integer。 那么区别是什么呢? 问题答案: 在Java中, “ int”类型是原始类型,而“ Integer”类型是对象。 在C#中, 类型与值类型相同,并且是值类型(即更像Java