자바 스터디 5회차

Yoojung Choi·2023년 2월 16일

JAVA 스터디

목록 보기
8/9

1. 상속

상속이란?

상속해주는 조상 클래스와 상속 받는 자손 클래스로 이루어지며, 자손 클래스는 조상 클래스의 모든 멤버를 상속받는다. 그렇지만 생성자와 초기화 블럭은 상속되지 않는다. 자손 클래스의 멤버 개수는 조상클래스보다 항상 같거나 많다. 상속은 클래스간의 결합도가 높은 설계이다. 상위 클래스의 수정이 하위 클래스에 영향을 미치기 때문에 계층구조가 복잡하거나 hierarchy가 높으면 좋지 않다.
다른 클래스 간의 관계로는 포함관계 Composite 관계가 있다.Java는 다중 상속을 허용하지 않는다.

상속을 사용하는 이유와 장점

  • 유지보수가 쉬워지고, 확장성이 용이해진다. - 공통적인 기능을 다시 추가하는 경우, 부모 클래스에만 추가해주면 되기 때문
  • 모듈화를 통해 재사용이 가능해진다.
  • 위의 이유로 코드가 간결해지고, 개발 시간을 단축할 수 있다.

상속을 활용한 클래스 구현 방법 (extends, super())

상속은 자식 클래스를 생성할 때,class Child extends Parent {} 로 구현한다.
부모 클래스의 멤버와 자식 클래스의 멤버 이름이 같을 경우 super 키워드를 사용해 구별할 수 있다.
자식 클래스에서 super 참조 변수를 사용해 부모 클래스의 멤버에 접근할 수 있다.
this와 마찬가지로 super 참조 변수도 인스턴스 메소드만 가능하고, 클래스 메소드에서는 사용할 수 없다.

2. 오버라이딩

오버라이딩(Overriding)이란?

조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것. 상속받은 메서드를 자손 클래스에 맞게 변경하는 경우, 조상의 메서드를 오버라이딩한다. 자손클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와 이름, 매개변수, 반환타입이 같아야한다. 다만 접근 제어자와 예외는 제한된 조건 하에서 변경할 수 있다. 접근제어자는 조상클래스의 메서드보다 좁은 범위로 변경할 수 없는데, 만약 조상 클래스에 정의된 메서드의 접근제어자가 protected라면 오버라이딩하는 메서드는 protected나 public만 가능하다. 또한 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

오버라이딩(Overriding)과 오버로딩(Overloading)의 차이

오버로딩이란 기존에 없는 새로운 메서드를 정의하는 것이지만, 오버라이딩은 상속받은 메서드의 내용을 변경하는 것이다.

4. 접근 제어자

캡슐화

  • 사용자에게 필요한 기능만을 노출시키고, 사용자가 알 필요가 없는 기능을 숨기는 것. -> 외부에서 사용될 메서드만 노출 시키면 된다.

[Simple 버전]

  1. 일단 모든 변수와 메서드는 private으로 선언해라.
  2. 외부에서 사용되는 메서드에 한해서만 public으로 변경해라.

[엄격한 버전]

  1. 일단 모든 변수와 메서드는 private으로 선언해라.
  2. 외부에서 사용되는 메서드라면 private 메서드를 defaultprotectedpublic 순으로 차근차근 변경해본다. (최소한의 접근이 되게끔 만들어야 한다.)

public, private, default, protected

  • public - 접근에 제한이 없음
  • protected - 동일한 패키지나 상속된 클래스에서 접근 가능
  • default - 접근 제어자가 없는 경우, 동일한 패키지 내에서만 접근이 가능
  • private - 자기 자신의 클래스 내에서만 접근이 가능
    public > protected > default > private 순으로 접근 범위가 크다.

0개의 댓글