JAVA - Polymorphism

석재호·2022년 2월 2일
0

JAVA

목록 보기
9/12
post-thumbnail
  • 다형성 (Polymorphism)

    • 상속 관계에 있을 때 조상 클래스의 타입으로 자식 클래스 객체를 레퍼런스 할 수 있다.
  • 다형성의 활용 예

    • 다른 타입의 객체를 다루는 배열

      배열의 특징 : 같은 타입의 데이터를 묶음으로 다룬다
      	Animal[] an = new Animal[10];
          
          an[0] = new Dog();
          an[1] = new Cat();
          an[2] = new Human();
    • 매개변수의 다형성

      메서드가 호출되기 위해서는 메서드 이름과 parameter가 맞아야 함
      -> 조상을 파라미터로 처리한다면 객체의 타입에 따라 메서드를 만들 필요가 사라짐
      	public void println(Object x){
          	String s = String.valueOf(x);
              synchronized(this){
              	print(s);
                  newLine();
              }
          }
  • 참조형 객체의 형 변환

    • 자손 타입의 객체를 조상 타입으로 참조 : 형변환 생략 가능
    • 조상 타입을 자손 타입으로 참조 : 형변환 생략 불가
    • 조상을 무작정 자손으로 바꿀 수는 없다
      • instanceof 연산자 : 실제 메모리에 있는 개체가 특정 클래스 타입인지 boolean으로 리턴
  • 참조 변수의 레벨에 따른 객체의 멤버 연결

    • 상속 관계에서 객체의 멤버 변수가 중복될 때
      • 참조 변수의 타입에 따라 연결이 달라짐
    • 상속 관계에서 객체의 메서드가 중복될 때 (메서드가 override 되었을 때)
      • 무조건 자식 클래스의 메서드가 호출됨 -> virtual method invovation
      • 최대한 메모리에 생성된 실제 객체에 최적화 된 메서드가 동작
profile
개발자 준비 중

0개의 댓글