Модификаторы внутреннего и частного доступа

Процедура + временная таблица:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `days`(IN dateStart DATE, IN dateEnd DATE)
BEGIN

    CREATE TEMPORARY TABLE IF NOT EXISTS date_range (day DATE);

    WHILE dateStart <= dateEnd DO
      INSERT INTO date_range VALUES (dateStart);
      SET dateStart = DATE_ADD(dateStart, INTERVAL 1 DAY);
    END WHILE;

    SELECT * FROM date_range;
    DROP TEMPORARY TABLE IF EXISTS date_range;

END
372
задан Jim Fell 28 September 2010 в 13:54
поделиться

6 ответов

внутренняя предназначена для области сборки (т. Е. Доступна только из кода в том же .exe или .dll)

private предназначена для области действия класса (т. Е. Доступна только из кода в том же классе).

491
ответ дан explorer 28 September 2010 в 13:54
поделиться
  • 1
    @DavidMoles Тогда это просто & quot; потому что Java не позволяет методам иметь одинаковую подпись, но разные возвращаемые типы. & Quot; Что касается рационального, вам нужно спросить Гослинга и т. Д. но большинство из них сводится к тому, что «это простой способ устранить определенный тип ошибок пользователя». – Dave Newton 25 February 2012 в 00:51

Найдите объяснение ниже. Вы можете проверить эту ссылку для получения дополнительной информации - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html

Приватный: - Приватные члены доступны только в пределах своего типа (Свой класс).

Внутренний: - Внутренний элемент доступен только внутри сборки по наследству (его производному типу) или по экземпляру класса.

enter image description here

Ссылка:

dotnetbull - что такое модификатор доступа в c #

197
ответ дан ragingasiancoder 28 September 2010 в 13:54
поделиться
  • 1
    Это не отвечает на вопрос. В вашем примере я бы ожидал, что Foo.frob() будет называться как bar как Foo. – Steve Kuo 24 February 2012 в 23:51

Частные члены доступны только внутри тела класса или структуры, в которой они объявлены.

Внутренние типы или элементы доступны только внутри файлов в одной сборке

6
ответ дан Jesper Fyhr Knudsen 28 September 2010 в 13:54
поделиться
  • 1
    Я не покупаю этот аргумент. У компилятора уже есть правило для этого. Если b объявлен как Bar, то b.frob() равен Bar.frob(), а если b объявлен как Foo, то даже если b равен , фактически экземпляр из Bar, b.frob() - Foo.frob(). Это легко продемонстрировать, если вы создадите пример, в котором типы совместимы. – David Moles 25 February 2012 в 00:43

internal элементы видны всему коду в сборке, в которой они объявлены.
(И для других сборок, на которые ссылается атрибут [InternalsVisibleTo] )

private, элементы видны только декларирующему классу. (включая вложенные классы)

Внешний (не вложенный) класс не может быть объявлен private, так как нет содержащей области действия, чтобы сделать его закрытым.

Чтобы ответить на вопрос, который вы забыли задать, protected члены похожи на private членов, но также видны во всех классах, которые наследуют декларирующий тип. (Но только для выражения, по крайней мере, типа текущего класса)

67
ответ дан SLaks 28 September 2010 в 13:54
поделиться

private - инкапсуляции в классе / scope / struct ect '.

внутренняя - герметизация в сборках.

6
ответ дан Yaniv Lugassy 28 September 2010 в 13:54
поделиться
  • 1
    (Вопрос отредактирован, чтобы добавить пример.) – David Moles 25 February 2012 в 00:50

Internal позволит вам ссылаться, скажем, на статический класс доступа к данным (для обеспечения безопасности потоков) между несколькими классами бизнес-логики, не подписываясь на них, чтобы наследовать этот класс / отключение друг от друга в пулах соединений, и в конечном итоге избежать класс DAL для продвижения доступа на общественном уровне. Это имеет бесчисленное множество опор в дизайне и лучших практиках.

Entity Framework хорошо использует этот тип доступа

3
ответ дан Nathan Teague 28 September 2010 в 13:54
поделиться
  • 1
    Что касается JVM, он будет искать в иерархии наследования точное совпадение, включая тип возвращаемого значения. Он игнорирует «ковариантные типы возвращаемых данных» и тому подобное. – Tom Hawtin - tackline 25 February 2012 в 02:29
Другие вопросы по тегам:

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