Как я могу сделать метод частным в интерфейсе?

Лично, я взял странность календарного API Java как признак, что я должен был отделить меня от Грегорианско-центрального мышления и попытки программировать более агностически в этом отношении. А именно, я учился еще раз избегать hardcoded констант для вещей как месяцы.

, Какое из следующего, более вероятно, будет корректно?

if (date.getMonth() == 3) out.print("March");

if (date.getMonth() == Calendar.MARCH) out.print("March");

Это иллюстрирует одну вещь, которая раздражает меня немного во Время Joda - это может поощрить программистов думать с точки зрения hardcoded констант. (Только немного, все же. Это не, как будто Joda принуждение программисты к программе плохо.)

38
задан lillq 5 September 2009 в 14:59
поделиться

5 ответов

Интерфейс может иметь только общедоступные методы. Вы можете рассмотреть возможность использования абстрактного базового класса с защищенным абстрактным методом AddError для этого. Затем базовый класс может реализовать интерфейс IValidationCRUD , но только после того, как вы удалите частный метод.

вот так:

public interface IValidationCRUD
{
    ICRUDValidation IsValid(object obj);
}

public abstract class ValidationCRUDBase: IValidationCRUD {
    public abstract ICRUDValidation IsValid(object obj);
    protected abstract void AddError(ICRUDError error);
}
45
ответ дан 27 November 2019 в 03:21
поделиться

Да, он доступен на CDN Google.

Все, что вам нужно, находится здесь: http://code.google.com/apis / библиотеки /

Вы можете создать ссылку непосредственно на файл javascript: https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js

или использовать google.load метод


Обновление

Также доступно на Microsoft » Однако наиболее близкое поведение к «частным полям», которого вы можете достичь, - это использование явной реализации (объяснено здесь: http://msdn.microsoft.com/en-us/library/ms173157.aspx )

6
ответ дан 27 November 2019 в 03:21
поделиться

Правило интерфейса:

CLR также позволяет интерфейсу содержать статические методы, статические поля, константы и статические конструкторы. Однако интерфейс, совместимый с CLS, не должен иметь ни одного из этих статических членов, поскольку некоторые языки программирования не могут определять их или получать к ним доступ. Фактически, C # не позволяет интерфейсу определять какие-либо статические члены. Кроме того, среда CLR не позволяет интерфейсу содержать какие-либо поля экземпляра или конструкторы экземпляров.

Это правила интерфейса, и вы ничего не можете с этим сделать:)

Это запрещено

interface IIValidationCRUD
{
    static ICRUDValidation IsValid(object obj); //error
}

interface IIValidationCRUD
{
    public ICRUDValidation IsValid(object obj); //error
}
1
ответ дан 27 November 2019 в 03:21
поделиться

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

32
ответ дан 27 November 2019 в 03:21
поделиться

You should probably check out the MSDN article here about interfaces: http://msdn.microsoft.com/en-us/library/ms173156.aspx

0
ответ дан 27 November 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: