Java : 상속, 클래스간 관계, 다중상속, Final 클래스

커비·2024년 11월 14일
0

Java

목록 보기
44/55

클래스간의 관계와 상속

  • 객체지향 프로그램에서도 부모 클래스의 필드와 메서드를 자식 클래스에게 물려줄 수 있음
  • 상속을 사용하면 적은 양의 코드로 새로운 클래스를 작성할 수도 있고 공통적인 코드를 관리하여 코드의 추가와 변경이 쉬워질 수도 있음
  • 이러한 특성 때문에 상속을 사용하면 코드의 중복이 제거되고 재사용성이 크게 증가해 생산성과 유지보수성에 매우 유리해진다.

클래스간 상속은 extends 키워드!

public class 자식클래스 extends 부모클래스 {

}
  • 상속의 키워드는 extends
    : 상속의 개념을 확장의 개념으로 이해해야 함
  • 부모 클래스에 새로운 필드와 메서드가 추가되면 자식 클래스는 이를 상속받아 사용할 수 있다
  • 자식 클래스에 새로운 필드와 메서드가 추가되어도 부모 클래스는 어떠한 영향도 받지 않는다
  • 자식클래스의 멤버 개수는 부모 클래스보다 항상 같거나 많다.

부모클래스, 자식클래스 실습


클래스간의 관계

상속관계

: is -a("~은 ~(이)다")

포함관계

: has - a ("~은 ~을(를) 가지고 있다")

  • 상속관계는 예저처럼 스포츠카와 자동차도 있지만 한가지 더 예를 들면 고래와 포유류가 있다.
    상속관계 : 고래는 포유류다 (스포츠카는 자동차다)

포함관계

포함관계는 자동차와 타이어, 차문, 핸들과의 관계라고 볼 수 있다

  • 자동차는 타이어를 가지고 있다
  • 자동차는 차문을 가지고 있다
  • 자동차는 핸들을 가지고 있다

단일 상속과 다중 상속

Java는 다중 상속을 허용하지 않음

❓ 다중상속을 허용하면 복잡한 소프트웨어의 기능을 구현할 때 여러개의 클래스를 상속받아 쉽게 구현할 수 있다는 장점이 있는데 왜 허용하지 않을까?

  • 다중상속을 허용하면 클래스간의 복잡해지는 문제가 생기기 때문
  • 만약 자식 클래스에서 상속받는 서로 다른 부모 클래스들이 같은 이름의 멤버를 가지고 있다면 자식 클래스에서는 이 멤버를 구별할 수 있는 방법이 없다는 문제가 생기게 됨

final

클래스final 키워드를 지정하여 선언하면 최종적인 클래스가 되어 더 이상 상속할 수 없는 클래스가 된다

상속 -> overriding
오버라이딩 : 부모로부터 내려받은 메서드를 재정의해서 쓰는 기법

  • 메서드에 final 키워드를 지정하여 선언하면 최종적인 메서드가 됨으로 더 이상 오버라이딩할 수 없는 메서드가 됨

Object

말 그대로 '객체'를 의미하는 단어이며 Object 클래스를 의미함

  • Object 클래스는 java 내 모든 클래스들의 최상위 부모 클래스
  • 모든 클래스는 Object의 메서드를 사용할 수 있음
  • 부모 클래스가 없는 자식 클래스는 컴파일러에 의해 자동으로 Object 클래스를 상속받게 됨

Object 클래스의 메서드

  • object clone() : 해당 객체의 복제본을 생성하여 반환함
  • boolean equals(Object object) : 해당 객체와 전달받은 객체가 같은지 여부를 반환함
  • Class getClass() : 해당 객체의 클래스 타입을 반환함
  • int hashCode() : 객체를 식별하는 정수값인 해시 코드를 반환함
  • String toString() : 해당 객체의 정보를 문자열로 반환함 & Object클래스에서는 클래스이름@해쉬코드값 리턴함
profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글