Java

자바의 정석 [Ch.07] 4

eunjineee 2024. 1. 24. 08:17

동적 바인딩 ( 다형성 )

  • 부모의 레퍼런스로 자식 객체를 접근하는 방식
  • 자식은 접근은 가능하지만, 사용할 수 있는 범위는 본인이 알고있는 범위까지만 인식가능
  • 최상위(가장 바깥의 본인 클래스에서 가지고 있는 함수만 쓸수있음)

final

  1. class : 상속 금지
  2. method : 오버라이딩 금지
  3. field : 상수화 (항상 static 같이 사용) ( 읽기 전용 )

참고 코드

class Halbe{
	int a;

	public int getA() {
		return 1;
	}

	public void setA(int a) {
		this.a = a;
	}
}

class Abe extends Halbe{
	int a;

	public int getA() {
		return 2;
	}

	public void setA(int a) {
		this.a = a;
	}
}

class Me extends Abe{
	int a;

	public int getA() {
		return 3;
	}

	public void setA(int a) {
		this.a = a;
	}
}
public class DynamicClass {
	public static void main(String[] args) {
		Halbe hal = new Halbe();
		Abe abe = new Abe();
		Me me  = new Me();
		
		System.out.println(hal.getA());
		System.out.println(abe.getA());
		System.out.println(me.getA());
		
		Halbe h;
		
		h = abe; // 동적 바인딩
		System.out.println(h.getA());   //>>> 2
		
		h = me; // 동적 바인딩
		System.out.println(h.getA());   //>>> 3
	}	
}

인터페이스 interface

  • 완전추상형
  • 상수, 추상 메소드
  • 다중상속을 대체
  • Implements 사용해서 표현
  • 여러개를 줄 수 있다
  • interface끼리는 다중 상속, 단일 상속이 가능하다
  • [메뉴판]

**상수는 대문자로만 사용함 final static int MAX = 99