자바(java) 상속 요점 정리

2021. 12. 16. 23:14자바 (Java)

헤이 찰리,앤, 스누피 

 

 

클래스 상속과 객체

 

  • 자바에서 상속은 부모 클래스의 필드와 메소드를 자식 클래스에게 물려주는 것이다.
  • 부모 클래스를 슈퍼 클래스, 자식 클래스를 서브 클래스라고도 한다.
  • 자바에서 상속을 선언할 때 extends 키워드를 사용한다. 

 

 

protected 접근 지정, 상속과 생성자 

 

  • 서브 클래스에서 슈퍼 클래스의 private 멤버는 접근할 수 없다.
  • 슈퍼 클래스의 protected 멤버는 패키지 소속과 상관없이 서브 클래스에서 접근이 가능하며 동일한 패키지 냅의 클래스에서도 접근이 가능하다. 
  • 서브 클래스의 인스턴스가 생성되면 항상 서브 클래스의 생성자 한 개와 슈퍼 클래스의 생성자 한 개가 실행된다. 
  • 이때 슈퍼 클래스의 생성자가 서브 클래스보다 먼저 실행된다. 
  • 서브 클래스의 생성자 작성시, super()로 슈퍼 클래스의 생성자를 명시적으로 선택한다.
  • 만일 슈퍼 클래스의 생성자를 명시적으로 선택하지 않으면, 컴파일러는 슈퍼 클래스의 매개 변수 없는 기본 생성자를 선택한다. 

 

 

업캐스팅과 instaceof 연산자

 

 

  • 서브 클래스 객체는 슈퍼 클래스 타입으로 자동 타입 변환이 가능하며, 이를 업캐스팅이라한다.
  • 다시 원래 타입으로 강제 타입 변환하는 것을 다운 캐스팅이라고 한다. 
  • instanceof 연산자의 결과 값은 boolean타입이며, 객체가 어떤 클래스 타입인지 판별할 수 있다. 

 

 

메소드 오버라이딩

 

  • 슈퍼 클래스에 선언된 메소드를 서브 클래스에서 재정의하는 것을 메소드 오버라이딩이라고 한다. 
  • 슈퍼 클래스의 메소드를 오버라이딩하면, 서브 클래스에 오버라이딩한 메소드가 항상 실행된다.
  • 호출된 메소드를 실행 시간에 찾아서 실행한 것을 동적바인딩이라고 부른다. 
  • 오버라이딩된 메소드는 동적 바인딩 방식으로 호출되고 실행된다. 
  • super키워드는 정적 바인딩으로 슈퍼 클래스에 있는 멤버에 접근할 때 사용한다. 

 

 

추상 클래스와 인터 페이스 

 

  • 추상 메소드는 실행 코드 없이 원형만 선언된 미완성 메소드이다. 
  • 반드시 메소드 이름 앞에 abstract를 붙여 선언하여야 한다. 
  • 추상 클래스는 최소 한개의 추상 메소드를 포함하는 경우 반드시 추상 클래스로 선언하여야 한다. 
  • 그러나 추상 메소드가 하나도 없는 경우라도 추상 클래스로 선언할 수 있다. 
  • 자바에서 인터페이스는 interface키워드를 사용하여 선언한다. 
  • 인터페이스를 구현할 때 implements 키워드를 사용하며, 인터페이스의 모든 추상 메소드를 구현하여야 한다. 
  • 추상 클래스와 인터페이스는 인스턴스 (객체)를 생성할 수 없다. .