c# 中抽象类和接口的区别
一个抽象类是用 C# 实现抽象的一种方式。抽象类从来不打算被直接实例化。该类必须包含至少一个抽象方法,在类定义中用关键字或修饰符抽象标记。抽象类通常用于定义类层次结构中的基类。
示例:
// 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 is G2");
}
}
// 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 is G2
像类一样,接口可以有方法、属性、事件和索引器作为其成员。但是接口将只包含成员的声明。接口成员的实现将由隐式或显式实现接口的类给出。
示例:
// 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 GeeksforGeeks!!!");
}
// Main Method
public static void Main(String[] args)
{
// Creating object
MyClass obj1 = new MyClass();
// calling method
obj1.show();
}
}
输出:
Welcome to GeeksforGeeks!!!
抽象类和接口的区别
| 抽象类 | 连接 | | 它包含声明和定义部分。 | 它只包含一个声明部分。 | | 多重继承不是通过抽象类实现的。 | 多重继承是通过接口实现的。 | | 它包含构造器。 | 它不包含构造函数。 | | 它可以包含静态成员。 | 它不包含静态成员。 | | 它可以包含不同类型的访问修饰符,如公共、私有、受保护等。 | 它只包含公共访问修饰符,因为接口中的所有内容都是公共的。 | | 抽象类的性能很快。 | 接口的性能很慢,因为它需要时间在相应的类中搜索实际的方法。 | | 它用于实现类的核心标识。 | 它用于实现类的外围能力。 | | 一个类只能使用一个抽象类。 | 一个类可以使用多个接口。 | | 如果许多实现是同类的,并且使用共同的行为,那么使用抽象类更好。 | 如果很多实现只共享方法,那么使用接口更好。 | | 抽象类可以包含方法、字段、常数等。 | 接口只能包含方法。 | | 它可以完全、部分或不执行。 | 应该全面实施。 |
版权属于:月萌API www.moonapi.com,转载请注明出处