Прежде чем узнавать об интерфейсе, нам нужно узнать о наследовании и их концепции. Наследование означает производное от других классов. Если я наследую от родительского класса, то дочерний класс выполняет все функции родительского класса.

Есть пять типов наследования

  1. Одиночное наследование: расширяет один родительский класс из формы.

Например

using System;
namespace InheritanceDemo
{
public class Details
{
string name;
string school;
public void Program(string name, string school)
{
this.name = name;
this.school = school;
Console.WriteLine(name +” at “+ school);
}
public class PrintDetails : Details
{
public void Print()
{
}
static void Main(string[] args)
{
Details obj = new Details();
obj.Program(“kajasumanie”, “Chavakachcheri hindu college”);
PrintDetails obj2 = new PrintDetails();
obj2.Print();
}
}
}
}

Здесь в PrintDetails используется класс деталей.

2. Многоуровневое наследование: родительский класс будет использовать для дочернего класса x, затем родительский класс x будет использоваться для дочернего класса y. Например, класс C является дочерним классом дочернего класса B, из которого класс B является дочерним классом класса A.

пример кода:

using System;
namespace InheritanceDemo
{
public class Details
{
string name;
string school;
public void Program(string name, string school)
{
this.name = name;
this.school = school;
Console.WriteLine(name +” at “+ school);
}
public class PrintDetails : Details
{
public void Print()
{
//Program(“kajasumanie”, “chava”);
}
public class Print2ForMultiLevel:PrintDetails
{
static void Main(string[] args)
{
Details obj = new Details();
PrintDetails obj2 = new PrintDetails();
Print2ForMultiLevel obj3 = new Print2ForMultiLevel();
obj3.Program(“kajasumanie”, “Chavakachcheri hindu college”);
}
}
}
}
}

В Print2ForMultiLevel используется класс details.

3. Иерархическое наследование: один родительский класс имеет несколько дочерних классов. Например, классы B, C и D наследуют один и тот же класс A. A является родительским классом из B, C и D.

using System;
namespace InheritanceDemo
{
public class Details
{
string name;
string school;
public void Program(string name, string school)
{
this.name = name;
this.school = school;
Console.WriteLine(name +” at “+ school);
}
public class PrintDetails : Details
{
public void Print()
{
//Program(“kajasumanie”, “chava”);
}
public class Print2ForMultiLevel: Details
{
static void Main(string[] args)
{
Details obj = new Details();
PrintDetails obj2 = new PrintDetails();
Print2ForMultiLevel obj3 = new Print2ForMultiLevel();
obj3.Program(“kajasumanie”, “Chavakachcheri hindu college”);
}
}
}
}
}

вывод:

каджасумание в индуистском колледже Чавакаччери

4. гибридное наследование: сочетание одиночного и множественного наследования .

5: Множественное наследование: JAVA и DOT NET (c #) не поддерживают эту концепцию.

что причина, мы используем интерфейсы.

Переопределение при наследовании

Переопределение методов суперкласса не является хорошей практикой, когда суперкласс является конкретным классом. Вот почему разработчики вместо этого используют интерфейсы.

Интерфейсы используются для достижения полной абстракции. Методы в интерфейсах не имеют тела, они реализуются классом до того, как вы сможете получить к ним доступ.

Например

public class Print2ForMultiLevel: Details,PrintDetails

Нельзя использовать это в C #, но по интерфейсу мы можем использовать несколько типов.

Например:

interface ISampleInterface { 
 }
interface Isample2Interface{
}
class ImplementationClass : ISampleInterface,Isample2Interface
{
}

когда вам нужно несколько реализаций.

Ссылки: