디필의 요모조모

명품 JAVA Programming 5장 요약 본문

Programming Language/Java

명품 JAVA Programming 5장 요약

Diphylleia12 2020. 6. 17. 17:26
  • 자바에서 상속은 부모 클래스의 필드와 메소드를 자식 클래스에게 물려주는 것이다. 부모 클래스를 슈퍼 클래스, 자식 클래스를 서브 클래스라고 한다.
  • 자바는 클래스의 다중 상속을 지원하지 않는다.
  • 자바에서 상속의 선언은 extends 키워드를 사용한다,
  • 서브 클래스의 객체에는 슈퍼 클래스의 필드와 메소드가 포함되어 있으나 슈퍼 클래스의 private 멤버는 서브 클래스에서 접근할 수 없다. 그리고 슈퍼 클래스의 protected 멤버는 패키지 소속과 상관없이 서브 클래스에서 접근이 가능하며 동일한 패키지 내의 클래스에서도 접근이 가능하다.
  • 서브 클래스의 인스턴스가 생성되면 항상 서브 클래스의 생성자 한 개와 슈퍼 클래스의 생성자 한 개가 실행된다.
  • 서브 클래스 객체는 슈퍼 클래스 타입으로 자동 타입 변환이 가능하며 이를 업캐스팅(upcasting)이라고 하며, 다시 원래의 타입으로 강제 타입 변환하는 것을 다운캐스팅(downcasting)이라고 한다.
  • instanceof 연산자는 결과 값이 boolean 타입이며 객체가 어떤 클래스 타입인지 판별할 수 있다.
  • 슈퍼 클래스에 정의된 메소드를 서브 클래스에서 재정의하는 것을 메소드 오버라이딩(overriding)이라고 한다.
  • 서브 클래스에서 슈퍼 클래스의 메소드를 오버라이딩하게 되면 서브 클래스의 인스턴스는 동일한 이름의 메소드를 두 개 가지게 된다. 이때 오버라이딩된 서브 클래스의 메소드가 항상 실행된다.
  • 호출된 메소드를 실행 시간에 찾아서 실행하는 것을 동적 바인딩이라고 부르며 오버라이딩된 메소드는 동적 바인딩 방식으로 호출되고 실행된다.
  • 추상 메소드(abstract method)는 메소드의 프로토타입만 있고 실행 코드를 작성하지 않은 미완성의 메소드이다. 추상 메소드를 정의하려면 메소드 이름 앞에 abstract라고 선언하여야 한다.
  • 추상 클래스(abstract class)는 abstract 키워드로 선언된 클래스이며 한 개 이상의 추상 메소드(abstract)를 포함하는 경우 반드시 추상 클래스로 선언하여야 한다. 그러나 추상 메소드를 하나도 가지고 있지 않은 경우라도 추상 클래스로 선언하는 것이 가능하다.
  • 추상 클래스의 객체 혹은 인스턴스는 생성될 수 없다.
  • 인터페이스(interface)는 일종의 추상 클래스로서 변수 멤버를 가지지 못한다.
  • 인터페이스를 정의하기 위해 interface라는 키워드를 사용한다.
  • 클래스가 인터페이스를 구현할 때 implements 키워드를 사용한다. 그리고 인터페이스에 정의된 모든 메소드를 구현하여야 한다.
Comments