다형성
![[JAVA-basic] 다형성(2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKNTR9%2FbtrcZsZy8Lr%2F6AKjX74ztvCKYsV13kekhK%2Fimg.png)
[JAVA-basic] 다형성(2)
참조변수와 인스턴스의 연결 조상 클래스에 선언된 멤버변수와 같은 이름의 인스턴스변수를 자손 클래스에 중복으로 정의했을 때, 조상타입의 참조변수로 자손 인스턴스를 참조하는 경우와 자손타입의 참조변수로 자손 인스턴스를 참조하는 경우는 서로 다른 결과를 얻는다. 메소드의 경우 조상 클래스의 메소드를 자손의 클래스에서 오버라이딩한 경우에도 참조 변수의 타입에 관계없이 항상 실제 인스턴스의 메소드(오버라이딩된 메소드)가 호출되지만, 멤버변수의 경우 참조변수의 타입에 따라 달라진다. 결론부터 말하자면, 멤버변수가 조상과 자손클래스에 중복으로 정의된 경우, 다음과 같이 조상타입의 참조변수를 사용했을 때는 조상 클래스에 선언된 멤버변수가 사용되고, 자손타입의 참조변수를 사용했을 때는 자손 클래스에 선언된 멤버변수가 사..
![[JAVA-basic] 다형성](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuxu5E%2Fbtrc2oVnEhS%2F5RCfteWhmM9gOA4PwGylyk%2Fimg.png)
[JAVA-basic] 다형성
다형성 객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미한다. 좀 더 구체적으로, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. 다음 예시를 살펴보자. class Tv{ // 조상 boolean power; int channel; void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; } } class CaptionTv extends Tv{ // 자손 String text; void caption() { } } 원래 이 두 클래스의 인스턴스를 생성한다고 하면, Tv t = new Tv() ; CaptionTv c = new..