Что означает это объявление C #? - PullRequest
0 голосов
/ 05 марта 2011

В программе на C # я вижу следующие объявления:

public class myForm : Form
public abstract myForm1 : myForm
public interface myInterface
public interface myInterface2 : myInterface
public class myClass : myForm1, myInterface2

Что значит myClass иметь myForm1 и myInterface2?

Является ли myForm1 базовым классом? Если это так, и в C # нет множественного наследования, каково это интерфейсное отношение к myClass? Чем интерфейс отличается от класса?

Ответы [ 2 ]

7 голосов
/ 05 марта 2011

Это означает, что myClass является производным от класса myForm1 и реализует интерфейс myInterface2.Многократное наследование не происходит, поскольку вы расширяете только один класс.

В Java это выражается двумя различными операторами, C # просто удобно использует оператор : для обоих:

class myClass extends myForm1 implements myInterface2

Интерфейс не является классом;это (проще говоря) список методов, которые должен иметь реализующий тип (или список правил, которым нужно следовать).

2 голосов
/ 05 марта 2011

Фаулер говорит,

Наследование и Подклассы в ОО-языках - это подход к реализации, в котором подкласс наследует данные и операции суперкласса,Он имеет много общего с подтипом , но есть важные различия.Создание подклассов - это только один из способов реализации подтипов ... Подклассы также могут использоваться без подтипов, но большинство авторов справедливо не одобряют эту практику.Более новые языки и стандарты все чаще пытаются подчеркнуть разницу между интерфейс-наследование (подтип) и реализация-наследование (подкласс).

Возникают два вопроса относительно взаимосвязи объект и тип .Во-первых, имеет ли объект один тип , который может наследоваться от супертипов ( одиночная классификация ), или он имеет несколько типов ( множественная классификация * 1027)*)?Множественная классификация отличается от множественного наследования .При множественном наследовании тип может иметь много супертипов, но каждый экземпляр имеет один тип, который может иметь супертипы.Множественная классификация позволяет использовать несколько типов для объекта без определения конкретного типа для этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...