Существует ли причина, Вы не можете определить модификатор доступа на методе или в интерфейсе?

(Я не положителен в этом, но...)

, AS3 использует недетерминированную сборку "мусора". Что означает, что не имеющая ссылки память будет освобождена каждый раз, когда время выполнения чувствует себя подобно ему (обычно не, если нет причина работать, так как это - дорогая операция для выполнения). Это - тот же подход, используемый самыми современными собравшими "мусор" языками (как C# и Java также).

Принятие там не является никакими другими ссылками на память, на которую указывают byteArray или объекты в самом массиве, память будет освобождена в какой-то момент после выхода из объема, где byteArray объявляется.

можно вызвать сборку "мусора", хотя Вы действительно не были должны. Если Вы сделаете, сделайте это только для тестирования..., если Вы сделаете это в производстве, Вы повредите производительность намного больше, чем справка это.

Для принуждения GC попробуйте (да, дважды):

flash.system.System.gc();
flash.system.System.gc();

можно читать больше здесь .

5
задан Bastien Vandamme 31 October 2009 в 00:19
поделиться

5 ответов

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

14
ответ дан 18 December 2019 в 05:49
поделиться

Вы может фактически сделать метод закрытым в реализующем классе, если вы сделаете явную реализацию интерфейса:

public interface IMyInterface
{
    bool GetMyInfo(string request);
}

public class MyClass : IMyInterface
{
    public void SomePublicMethod() { }

    bool IMyInterface.GetMyInfo(string request)
    {
        // implementation goes here
    }
}

Этот подход означает, что GetMyInfo не будет частью открытого интерфейса MyClass . Доступ к нему можно получить, только преобразовав экземпляр MyClass в IMyInterface :

MyClass instance = new MyClass();

// this does not compile
bool result = instance.GetMyInfo("some request"); 

// this works well on the other hand
bool result = ((IMyInterface)instance).GetMyInfo("some request");

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

10
ответ дан 18 December 2019 в 05:49
поделиться

В терминах объектно-ориентированной инкапсуляции все сводится к сокрытию данных. Это означает, что все, что происходит внутри класса, зависит от его реализации. Это означает, что было бы бесполезно принудительно применять частные члены по контракту.

Однако причина использования интерфейсов заключается в том, что вы хотите, чтобы класс придерживался определенного контракта и последовательно выставлял несколько открытых членов.

4
ответ дан 18 December 2019 в 05:49
поделиться

Частное определение в интерфейсе:

  1. не принесет пользы пользователю интерфейса (в конце концов, это частный)
  2. ограничит реализующий класс, чтобы он реализовал метод или свойство
  3. замутить концептуальную природу интерфейса деталями реализации
  4. быть похожим на абстрактный класс с частным методом (что не разрешено)
0
ответ дан 18 December 2019 в 05:49
поделиться

Все методы интерфейса должны иметь одинаковый уровень доступа, чтобы вызывающий мог использовать их все. Однако интерфейсы также могут быть внутренними (или частными вложенными интерфейсами).

Если вам нужны разные уровни доступа, используйте отдельный интерфейс.

1
ответ дан 18 December 2019 в 05:49
поделиться
Другие вопросы по тегам:

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