2015-04-26 3 views
3

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

этот пример я прочитал

давайте вашу «руку» в качестве примера. «Рука» - это класс. В вашем теле есть два объекта типа «рука», называемые «левая рука» и «правая рука». Их основные функции управляются или управляются набором электрических сигналов, передаваемых через ваши плечи (через интерфейс). Таким образом, плечо - это интерфейс, который ваш организм использует, чтобы взаимодействовать руками. Рука - хорошо продуманный класс. Рука повторно используется, чтобы создать левую руку и правую руку, слегка изменив ее свойства.

это только указывает, что интерфейс управления или управляет классом, я согласен с этой точкой, но как-то я узнал, что интерфейс может передавать данные из одного класса в другой, так это правильно, если мы определим интерфейс, как это или говорят, что мы используем интерфейс для этой цели

интерфейс создает связь между двумя классами, например, интерфейс IABC наследуется ClassA и ClassB, то он может послать информацию о ClassA в ClassB.

public interface Interface1 
{ 
    void Method1(string msg); 
    void Method2(string msg1 ,string msg2); 
} 
public static class HelperClass 
{ 
    public static void Method1(Interface1 obj ,string msg) 
    { 
     obj.Method1(msg); 
    } 

    public static void Method2(Interface1 obj,string msg1, string msg2) 
    { 
     obj.Method2(msg1,msg2); 
    } 
} 
    static void Main(string[] args) 
    { 
     var Car = new Vehcile(); 
     var HS = new Person(); 
     Car.per= "Car Clss"; 
     HS.per = "HS Clss"; 
     HelperClass.Method1(Car, Car.per); 
     HelperClass.Method1(HS, HS.per); 
     HelperClass.Method2(Car, Car.per, HS.per); 
     HelperClass.Method2(HS, HS.per, Car.per); 
     Console.ReadKey(); 
    } 

    public class Person : Interface1 
{ 

    public String per; 

    void Interface1.Method1(string msg) 
    { 
     Console.WriteLine(msg); 
    } 

    void Interface1.Method2(string msg1, string msg2) 
    { 
     Console.WriteLine("Person Class" + msg1 + " " + msg2); 
    } 
} 

class Vehcile : Interface1 
{ 
    public String per; 

    void Interface1.Method1(string msg) 
    { 
     Console.WriteLine(msg); 
    } 

    void Interface1.Method2(string msg1, string msg2) 
    { 
     Console.WriteLine("Vehcile Class" + msg1 + " " + msg2); 
    } 
} 

ответ

5

Правильно ли сказать, что интерфейс обменивается данными между двумя классами?

Я бы не стал определять интерфейс как таковой. Я бы посмотрел на интерфейс, как на обязательный контракт. В контракте указано: «Любой, кто реализует этот интерфейс, должен иметь возможность выполнять любые действия, определенные в контракте».

Например:

public interface IHand 
{ 
    void Shake(IHand otherHand); 
} 

public class Hand : IHand 
{ 
    public void Shake(IHand otherHand) 
    { 
     Console.WriteLine("Shook the other hand"); 
    } 
} 

IHand представляет собой интерфейс, и она объявляет метод, называемый Shake, который принимает другой объект IHand. Любой класс, который реализует наш интерфейс, должен предоставить метод под названием Shake, который что-то делает.

В этом конкретном примере наш класс Hand записывает на консоль каждый раз, когда он трясет другую руку.

Через интерфейсы мы можем создать абстракции. Значение, вместо того, чтобы зависеть от конкретного класса (например, Hand), мы можем зависеть только от договора . Это означает, что любой объект, который реализует IHand, в порядке с нами, потому что гарантировано, что у него будет метод Shake, который мы можем вызвать. То, что происходит внутри метода Shake, находится за пределами нас, и нам обычно все равно.

Смежные вопросы