작성
·
233
0
답변 1
2
안녕하세요 연어포케님!!! 크으~~ 매우 매우 좋은 질문이십니다 ㅎㅎㅎㅎㅎ
'추상 멤버(함수/프로퍼티)'에 대한 정의는 interface와 abstract class에 따라 달라지게 됩니다!
interface : 구현체가 없는 경우에 추상 멤버
interface A {
fun do1() // 추상 멤버 O
fun do2() { // 추상 멤버 X
println("인터페이스에 구현도 했다!!")
}
}
abstract class : abstract이 붙어 있는 경우 추상 멤버
abstract class A {
abstract fun do1() // 추상 멤버 O
fun do2() { // 추상 멤버 X
println("추상 클래스에서 구현도 했다!!")
}
}
함수에 대해서만 예시를 들었지만, 프로퍼티도 똑같다고 생각해주시면 됩니다 ㅎㅎㅎㅎㅎ
추가 설명이 필요하시면 편하게 질문 남겨주시고, 다른 내용에 대해서도 언제든 질문 남겨주세요~!!!!
감사합니다!!! 오늘도 좋은 하루 되세요~ 😊😊
넵넵!
인터페이스에 선언되있는 필드 및 메소드들은 상속을 해야만 사용가능한 항목들 이기 때문에 기본적으로 open을 사용중이라고 생각하면 될까요?
라고 이해해 주셔도 될 것 같습니다. 👍 🙂
관련해서 Kotlin 개발진의 official한 의견을 들어본적은 없는 것 같네요~!! 감사합니다.
태현님 오래전 질문이지만 이 질문에 관해서도 한가지 추가로 궁금한점이 있습니다.
인터페이스에 default로 구현되어있는 멤버는 추상 멤버가 아니라고 말씀 해주셨는데요.
추상 멤버가 아님에도 불구하고 open 키워드 없이 override를 할 수 있는 이유는 뭘까요?(예를들어 영상 속 act 메소드)
인터페이스에 선언되있는 필드 및 메소드들은 상속을 해야만 사용가능한 항목들 이기 때문에 기본적으로 open을 사용중이라고 생각하면 될까요?