Swift không có lớp và phương thức trừu tượng. Thay vào đó, nó cung cấp các giao thức.Swift - trộn các phương pháp trừu tượng và cụ thể
Điều đó tốt khi lớp học của bạn hoàn toàn trừu tượng hoặc hoàn toàn cụ thể.
Nhưng cách 'Swift' tốt nhất để triển khai lớp trừu tượng cũng có phương pháp cụ thể là gì?
Pseudo-code ví dụ:
class Animal {
abstract makeSound()
abstract eyeCount()
}
class Mammal : Animal {
override eyeCount { return 2 } // Let's assume all mammals have hard-coded 2 eyes...
class Cat : Mammal {
override makeSound { print "Meow!" }
}
class Dog : Mammal {
override makeSound { print "Woof!" }
}
Trong động vật có vú, tôi muốn thực hiện phương pháp bê tông eyeCount()
bởi vì tất cả động vật có vú có 2 mắt mã hóa cứng (được cho là) và tôi không muốn tái thực hiện nó trong chó và mèo. Tuy nhiên, chỉ nên triển khai makeSound()
cho Chó và Mèo vì động vật có vú có các giọng nói khác nhau.
Bạn sẽ triển khai điều này trong Swift như thế nào? Cảm ơn!
Tôi thực sự gặp rắc rối với những thứ tuyên bố đi sai chỉ trong thời gian chạy. Nó làm cho mã không đáng tin cậy. Kiểm tra @pommes câu trả lời hoặc này, để thực hiện, kiểm tra trong thời gian biên dịch http://stackoverflow.com/a/39038828/2435872 – jboi