인터페이스
* 인터페이스
코틀린은 반드시 부모 클래스는 한 개라서 모두 상속으로 처리할 수 없음
-> 따라서 근본적인 공통점을 상속받고, 추가적인 기능들은 인터페이스로 추가
-> 코틀린은 인터페이스를 만들기 위해 interface 키워드를 사용
인터페이스는 추상메소드만 허용(최근에는 추상메소드가 아니어도 괜찮지만 그래도 추상메소드 위주로 작성할 것)
(추상메소드란? : 메소드 안에 로직이 없고 메소드 이름만 있는 것)
* 인터페이스 구조
interface 인터페이스이름 {
fun 메소드이름()
}
* 인터페이스 예제
interface WaterBirdBehavior {
fun swim()
}
fun main() {
var bird = Bird("새")
var chicken = Chicken("닭")
var sparrow = Sparrow("참새")
var pigeon = Pigeon("비둘기")
var duck = Duck("오리")
bird.fly()
chicken.fly()
sparrow.fly()
pigeon.fly()
duck.swim()
}
open class Bird(name:String) {
var name: String = ""
init {
// this는 현재 클래스의 상태변수를 의미합니다
// var name: String = ""
this.name = name
}
fun fly() {
println("${name} 날아요~")
}
}
class Chicken(name: String) : Bird(name) {
}
class Sparrow(name: String) : Bird(name) {
}
class Pigeon(name: String) : Bird(name) {
}
class Duck(name: String) : Bird(name), WaterBirdBehavior {
override fun swim() {
println("${name}가 수영해요~")
}
}
-> WaterBirdBehavior(인터페이스)에 추상메소드인 fun swim()를 작성
-> 자식 클래스인 Duck 정의부에 인터페이스명 작성
-> Duck 클래스 내부에는 오버라이딩과 인터페이스에서 가져온 추상 메소드를 통해 재설계
새 날아요~
닭 날아요~
참새 날아요~
비둘기 날아요~
오리가 수영해요~
-> 이와 같은 결괏값이 나오는 걸 확인
배우면서 느낀 점
오전에는 인터페이스 강의만 들었는데 내용 자체도 짧고 난이도도 어제 배운 내용들에 비해선 난이도가 쉬운 편이라 이해하기 쉬웠다. 그래서 금방 강의를 듣고 어제 배운 내용들을 조금 복습했다. 오후에는 계산기를 만드는 과제를 진행하였지만 아직 미완성인 데다가 정리가 전혀 안되어있어서 과제 진행 내용은 금요일 날 따로 작성해야 할 것 같다.
과제는 강의와 달리 관련 예제 코드가 없이 문제만 적혀있다 보니 문제 의도와 다른 코드를 자꾸 작성하게 되어서 튜터님들에게 중간중간 조언도 들었다. 생각보다 많이 어려워서 시간이 좀 오래 걸릴 것 같다.. 금요일까지 푸는 걸 목표로 진행해보려고 한다.
'Android 앱개발 공부 > TIL(Today I Learned)' 카테고리의 다른 글
[Android] TIL 14일차 (2) | 2024.06.10 |
---|---|
[Android] TIL 13일차 (0) | 2024.06.07 |
[Android] TIL 11일차 (2) | 2024.06.04 |
[Android] TIL 10일차 (0) | 2024.06.03 |
[Android] TIL 9일차 (0) | 2024.05.31 |