Методи перерахувань
Перерахування (як чисті, і типизированные) можуть містити методи і можуть реалізовувати інтерфейси. Якщо перерахування реалізує інтерфейс, то будь-яка перевірка типу цього інтерфейсу також прийме всі варіанти цього перерахування.
Loading...
У цьому прикладі кожен із чотирьох екземплярів Suit
имеет два метода:color()
иshape()
. У коді, що викликає, і при перевірці типів екземпляри перерахування поводяться точно так само, як і будь-який інший екземпляр об'єкта.
У типізованих переліках оголошення інтерфейсу відбувається після оголошення типу перерахунку.
Loading...
Переменная$this
визначено всередині методу і посилається на екземпляр варіанта.
Складність методів у перерахування не обмежена, але на практиці методи перерахувань частіше повертають статичне значення або результат обробки змінної $this
виразом matchщоб результати обробки окремих екземплярів перерахування відрізнялися.
Зверніть увагу, у цьому прикладі кращою практикою побудови даних було б визначити тип перерахування SuitColor
зі значеннями Red та Black і повертати їх замість рядкових літералів. Однак це ускладнило б приклад.
Ієрархія в прикладі логічно схожа на наступну структуру класів (хоча це не справжній код, що виконується):
Loading...
У переліках дозволено оголошувати загальнодоступні, закриті та захищені методи, хоча на практиці закриті та захищені методи еквівалентні, оскільки успадкування не дозволене.