코틀린 상속관련 질문입니다

18.06.28 09:28 작성 조회수 171

0

코틀린에서 val은 java로따지면 final인걸로 알고있었는데요

이번 Class-상속 강의에서 override되는게 조금 특이해서 이렇게 질문남기게되었습니다.

조금 찾아본바로는 코틀린에서의 val은 immutable이 아니고 read-only라던데

어떻게 다른건지 감이 오지않습니다.

알기쉽게 알려주실수 있을까요?

답변 1

답변을 작성해보세요.

0

예리한 질문입니다. 저도 이것때문에 처음에 많이 했깔렸습니다. 여기서 보시면 val 값을 세팅하는 것이 아니고 getName Function을 오버라이드 한다고 생각하시면 됩니다. 즉 이 Class-상속 영상의 실제 자바 코드는

 class Human {  
 public final String name = "하울";
public String getName() {
    return name;
}
}  
 class Person extends Human {
@Override
public String getName() {
    return "Howl";
}

}  
 public class JavaMain {

public static void main(String[] args) {
    Human human = new Human();
    Person person = new Person();
    System.out.println(person.getName());
    System.out.println(human.getName());
}
}

라고 생각하시면 됩니다. 사실 이 코드에는 getName 있지만 이게 코틀린으로 넘어가게되면 Get 생략되면서 name만 남게 됩니다.