Software Engineering/Java, JSP

[Java] 제4장 인터페이스와 다형성

iseop 2023. 4. 30. 15:04   인쇄용 버전

1. 단원 요약

  • abstract 클래스/메소드는 형식만 정의된 클래스/메소드로, 추상 클래스/메소드라고 한다.
  • 추상 클래스만이 추상 메소드를 가질 수 있다.
  • abstract 클래스/메소드는 자식클래스에서 구현되어야 하므로 abstract인 동시에 final일 수 없다.
  • 추상 클래스는 서로 연관된 클래스들이 유사한 메소드 형식을 공유하고자 할 쌔 사용한다.
  • 인터페이스 클래스는  서로 연관이 없는 클래스들이 유사한 기능을 공유하고자 할 경우 사용한다.
  • 인터페이스는 추상클래스와 유사하나, 객체를 생성할 수 없다.
  • 인터페이스 간 상속 관계가 존재할 수 있다.
  • 인터페이스의 접근제어자는  public 또는 생략이다.
  • 인터페이스의 모든 메소드는 abstract이며 public 또는 생략이다.
  • 인터페이스의 메소드에 그 기반이 되는 코드를 정의할 수 있다. 이를 디폴트 메소드라고 하며, default 키워드를 쓴다.
  • 다형성은 메소드 오버라이딩, 메소드 오버로딩, 메소드 동적 바인딩을 통해 구현된다.
  • 여러 상수값을 미리 정의할 수 있는 열거 자료형이 있으며, 키워드는 enum이다.
  • 이는 java.lang.Enum의 자식클래스이다. 원소를 배열로 반환하는 values() 메소드가 있다.
  • enum 클래스의 각 상수는 객체로 취급된다.
  • enum 클래스의 생성자에 대한 접근제어자는 생략 또는 private이다.
  • 독립된 클래스 정의 없이 단일 객체를 생성하기 위한, 이름이 없는 클래스를 익명 클래스라 한다.
  • 익명클래스를 객체화 하는 방법에는 두 가지가 존재한다.
  • 첫 번째 방법은 다른 클래스를 상속받는 익명클래스를 통해 객체를 생성하는 방법이다.
  • 두 번째 방법은 인터페이스를 구현하는 익명클래스를 통해 객체를 생성하는 방법이다.

 

2. 연습문제 요약

  • 인터페이스는 다중 상속이 가능하다.
  • 자식인터페이스가 부모인터페이스를 상속하는 경우 implements가 아닌 extends 키워드를 사용한다.
  • 인터페이스에 선언된 메소드는 구현되어 있으면 안 된다. (몸체가 없어야 한다.)
  • 인터페이스에 완성된 메소드를 포함하고자 하는 경우 default 키워드를 사용하여 디폴트 메소드로 정의하여야 한다.
  • 추상클래스에 존재하는 추상메소드는 반드시 자식클래스에서 구현되어야 한다.
  • 컴파일 시 소스 파일에 존재하는 클래스의 내부에 다른 클래스가 있는 경우 외부클래스식별자$내부클래스식별자.class 파일이 생성된다. 익명클래스는 식별자가 없으므로 1부터 시작하는 숫자로 표현된다.