一个抽象类是在C#中实现抽象的一种方法。从不打算直接实例化Abstract类。此类必须包含至少一个抽象方法, 该方法由关键字或修饰符标记抽象在类定义中。 Abstract类通常用于在类层次结构中定义基类。
例子:
//C# program to illustrate the
//concept of abstract class
using System;
//abstract class 'G'
public abstract class G {//abstract method 'gfg1()'
public abstract void gfg1();
}//class 'G' inherit
//in child class 'G1'
public class G1 : G {//abstract method 'gfg1()'
//declare here with
//'override' keyword
public override void gfg1()
{
Console.WriteLine( "Class name is G1" );
}
}//class 'G' inherit in
//another child class 'G2'
public class G2 : G {//same as the previous class
public override void gfg1()
{
Console.WriteLine( "Class name isG2" );
}
}//Driver Class
public class main_method {//Main Method
public static void Main()
{//'obj' is object of class
//'G' class '
//G' cannot
//be instantiate
G obj;
//instantiate class 'G1'
obj = new G1();
//call 'gfg1()' of class 'G1'
obj.gfg1();
//instantiate class 'G2'
obj = new G2();
//call 'gfg1()' of class 'G2'
obj.gfg1();
}
}
输出:
Class name is G1
Class name isG2
像类一样接口可以将方法, 属性, 事件和索引器作为其成员。但是接口将仅包含成员的声明。接口成员的实现将由隐式或显式实现接口的类给出。
例子:
//C# program to illustrate the
//concept of interface
using System;
//A simple interface
interface interface1 {//method having only declaration
//not definition
void show();
}//A class that implements the interface.
class MyClass : interface1 {//providing the body part of function
public void show()
{
Console.WriteLine( "Welcome to srcmini!!!" );
}//Main Method
public static void Main(String[] args)
{//Creating object
MyClass obj1 = new MyClass();
//calling method
obj1.show();
}
}
【C#中抽象类和接口之间的区别】输出如下:
Welcome to srcmini!!!
抽象类和接口之间的区别
抽象类 | 接口 |
---|---|
它包含声明和定义部分。 | 它仅包含一个声明部分。 |
抽象类无法实现多重继承。 | 通过接口实现多重继承。 |
它包含构造函数。 | 它不包含构造函数。 |
它可以包含静态成员。 | 它不包含静态成员。 |
它可以包含不同类型的访问修饰符, 例如public, private, protected等。 | 它仅包含公共访问修饰符, 因为界面中的所有内容都是公共的。 |
抽象类的性能很快。 | 接口的性能很慢, 因为它需要时间来搜索相应类中的实际方法。 |
它用于实现类的核心标识。 | 它用于实现班级的外围能力。 |
一个类只能使用一个抽象类。 | 一个类可以使用多个接口。 |
如果许多实现都是相同的并且使用共同的行为, 那么使用抽象类是更好的选择。 | 如果许多实现仅共享方法, 则使用Interface更好。 |
抽象类可以包含方法, 字段, 常量等。 | 接口只能包含方法。 |
它可以全部, 部分或不实施。 | 它应得到充分实施。 |
推荐阅读
- Java中抽象类和接口之间的区别
- 算法-差异数组(O(1)时间范围更新查询)
- 32位和64位操作系统之间的区别
- AES和DES密码之间有什么区别()
- Nginx网络压缩 CSS压缩 图片压缩 JSON压缩
- #yyds干货盘点# java实现快速排序
- vivo 评论中台的流量及数据隔离实践
- #yyds干货盘点#简单的文本预处理
- 使用MyBatis拦截器后,摸鱼时间又长了。?