///////
Search

13_다형성_김지수

다형성

객체들의 타입이 다르면 똑같은 메세지가 전달 되더라도 서로 다른 동작을 하는 것
부모=자식
Shape shape2 = new Rectangle();
Java
복사
부모 타입이더라도 부모 메소드가 아닌 오버라이딩된 메소드를 호출한다.
부모 타입에 자식 타입을 대입해도 형변환을 하지 않아도 된다. 즉 자동 형변환이 된다.
class A { public void print(){내용1;} } class B extends A { @Override public void print(){내용2;} } class C extends A { @Override public void print(){내용3;} } public class Practice { public static void main(String[] args) { A a = new B(); A a2 = new C(); a.print(); //내용2 a2.print(); //내용3 } }
Java
복사
부모 클래스 타입 변수에 자식 클래스 객체를 생성하면 오버라이딩 메소드는 각자 class의 메소드로 실행된다.
부모 타입인 a 변수에 자식 객체인 B를 대입할 수 있는 이유
B객체를 생성할 때 부모클래스부터 메모리에 올라간다.
따라서 변수 a는 A객체를 참조할 수 있다.
자식 타입인 b에 부모 객체인 A를 대입할 수 없는 이유
클래스 B의 멤버에 접근할 수 없기 때문이다.
메모리에 올라오지 않았기 때문.
자식=부모는 자식의 필드, 메소드를 포함시키지 않기 때문에 컴파일에러가 난다.
데이터 타입은 heap 메모리에 접근할 수 있는 범위를 제한시킨다.