Хобрук: Ваш путь к мастерству в программировании

Интерфейс для производного класса

Можно ли заставить производные классы класса реализовать интерфейс?

Скажем, у меня есть интерфейс IImportantStuff и классы Base и DerivedA, _4 _, _ 5_ и ...

Я хочу заставить DerivedA, DerivedB, DerivedC и все другие классы, которые будут наследовать базовый класс в будущем (классы, которые я могу разработать в будущем), реализовать IImportantStuff.

Отредактировано:

В качестве еще одного вопроса: каждый унаследованный класс (производный от базового класса) работает с определенной сущностью (например, клиент, владелец магазина, персонал), и я хочу заставить производные классы объявлять свою сущность, чтобы программисты в моей команде не создавали класс, унаследованный от База без определения сущности. Я хотел сделать это через Generics и Interfaces, чтобы в базовой форме они могли получить доступ к свойствам и членам Entity.

Например

class Base<T> { public T Entity {get; set;} }

class MidClass : Base {}

class Customer
{
    public string CustomerName {get; set;}
}

class Shopkeeper
{
    public int ShopkeeperID {get; set;}
}

class Shop1 : Base<ShopKeeper>
{
    //1. Force the programmer to implement ShopkeeperID
    //2. Be able to access the properties of Shopkeeper
    void MyMethod()
    {
        var skid = this.Entity.ID;
    }
}

class Shop2 : Base<Customer>
{
    void MyMethod()
    {
        var skid = this.Entity.CustomerName;
    }
}

Я хочу, чтобы Shop1 и Shop2 наследовали базовый класс, а не непосредственно интерфейс, потому что мои со-программисты могут забыть наследовать от Interface в своих классах. Итак, я хочу оказать влияние на MidClass, и их классы, унаследованные от MidClass, должны реализовывать интерфейс.


  • Вероятно, так же, как: stackoverflow.com/questions/7652885/ 19.01.2015
  • Не могли бы вы показать определения классов? 19.01.2015
  • @ 48klocs Я так и сделал. благодаря. 19.01.2015

Ответы:


1

один из способов - объявить базовый класс абстрактным и сделать методы и свойства IImportantStuff абстрактными:

public interface IImportantStuff
{
    void Action();
}

public abstract class Base: IImportantStuff
{
    public abstract void Action();
}
19.01.2015

2

Пока ваш Base класс реализует IImportantStuff, все производные классы также будут реализовывать его.

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

19.01.2015
Новые материалы

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

мои январские чтения по программированию
Эрик Эллиот Программирование приложения JavaScript Эл Свейгарт «Автоматизируйте скучные вещи с помощью Python» Прогрессивное веб-приложение Google..

Создание ассоциаций секвелизации с помощью инструмента командной строки Sequelize
Sequelize - популярный, простой в использовании инструмент объектно-реляционного сопоставления (ORM) JavaScript, который работает с базами данных SQL. Довольно просто начать новый проект с..

Искусственный интеллект в юридической отрасли - пример прогнозирования судебных решений с помощью глубокого обучения
На протяжении всей истории люди полагались на суды, присяжных, королей и королев в отправлении правосудия. Сегодня способность судов обеспечивать справедливое и быстрое правосудие для своих..

Введение в машинное обучение для обнаружения аномалий (часть 1)
Тщательно созданный, тщательно спроектированный ресурс для специалистов по данным. Часть 1 Главы 03 из Руководства по машинному обучению для обнаружения аномалий Внимание! Прежде чем вы..

Начало работы с Pulumi в Digital Ocean
Цифровой океан (ДО) — отличная альтернатива многим другим поставщикам облачных услуг. DO предоставляет простой и понятный пользовательский интерфейс, упрощающий управление инфраструктурой и..

#Day68 из #100days_of_coding
Вчера был мой 68-й день кодинга. я решил один вопрос Проблема: Разбить двоичную строку на подстроки с равным количеством нулей и единиц Дана двоичная строка str длины N . Задача состоит..