Совместимые типы ActionScript 

 

 

Поскольку любой отдельно взятый класс через наследование может использовать 

все незакрытые члены экземпляра своего суперкласса (или суперинтерфейса),  

любой отдельно взятый подтип считается совместимым с любым из своих супертипов. 

Например, тип данных Apple считается совместимым с типом данных Food,  

поскольку он является его подтипом. 

Обратное, однако, неверно. Класс не может использовать никакие члены  

экземпляра, определенные в его классах-потомках. Таким образом, любой отдельно взятый 

супертип считается несовместимым с любым из своих подтипов. Например, тип 

данных Food считается несовместимым с типом данных Apple, поскольку Food 

не является подтипом Apple. 

Подтип считается совместимым с супертипом, поскольку программа может  

рассматривать экземпляр подтипа как экземпляр супертипа. Например, программа 

может рассматривать любой экземпляр типа данных Apple как экземпляр типа 

данных Food — возможно, вызывая метод getCalories ( ) класса Food  

надданным экземпляром. 

// Создаем новый экземпляр класса Apple 

var apple = new Applet ); 

// Допустимо вызвать метод getCalories( ) над экземпляром класса Apple 

apple.getCalories( ); 

Для сравнения отметим, что супертип считается несовместимым с подтипом,  

поскольку программа не может рассматривать экземпляр супертипа как экземпляр 

подтипа. Например, программа не может вызвать метод hasWorm ( ) класса Apple 

над экземпляром типа данных Food: 

// Создаем новый экземпляр класса Food 

var food = new FoodB00); 

// Следующая строка приведет к возникновению ошибки обращения, 

// поскольку класс Food не имеет доступа к методу hasWorm( ) 

food.hasWorm( ); // Ошибка! 




BACK NEXT

Сайт является частным собранием материалов и представляет собой любительский информационно-образовательный ресурс. Вся информация получена из открытых источников. Администрация не претендует на авторство использованных материалов. Все права принадлежат их правообладателям