1 분 소요

배운점

1. 상속(Extends)

  • 상위 클래스의 기능을 그대로 이어받아 재사용하는 것
  • 코드의 재사용성을 높이고, 중복을 제거하여 생산성과 유지보수를 높힌다
  • 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있다
  • 상속 구조가 복잡해지면 오히려 보수하기 힘들어 질 수 있다

클래스 간의 관계는 ‘~은 ~이다’(상속관계) ‘~은 ~을 가지고 있다’(포함관계)로 확인 할 수 있다.

매소드 오버라이딩(Method Overriding)


  • 상위 클래스로부터 상속받은 매소드와 동일한 이름의 매소드를 재정의하는 것
  • 상위 클래스의 매소드를 하위 클래스에 맞게 변경하고자 할 때 사용된다
  • 매소드의 선언부(메소드 이름, 매개 변수, 반환 타입)가 상위 클래스와 완전히 일치해야한다
  • 접근 제어자의 범위가 상위 클래스의 매소드보다 같거나 넓어야 한다
  • 예외는 상위 클래스의 매소드보다 많이 선언할 수 없다.

super와 super()


  • super는 상위 클래스의 객체를 가르킨다
  • super()는 상위 클래스의 생성자를 호출한다(this()와 사용방법 동일)

Object 클래스


  • Object 클래스는 자바 클래스 상속계층도에서 최상위에 위치한 클래스이다
  • extends를 하지 않으면 자동으로 Object 클래스를 상속한다
  • 여러가지 유용한 매소드가 있다

2. 캡슐화

  • 특정 객체 안에 속성과 기능을 캡슐로 만들어 데이터를 외부로부터 보호하는 것
  • 데이터의 보호, 불필요한 노출을 방지하기 위해 캡슐화를 사용한다(정보은닉)

접근 제어자


접근 제어자 접근 제한 범위
private 동일 클래스에서만 접근 가능
default 동일 패키지 내에서만 접근 가능
protected 동일 패키지 + 다른 패키지의 하위 클래스에서 접근 가능
public 접근 제한 없음
  • 접근 제어자는 단 하나만 선언 될 수 있다
  • public > protected > default > private 순으로 정리된다
  • 접근 제어자를 작성하지 않았을 경우 default 접근 제어자가 할당된다

getter와 setter 매소드


public void setter(int a) {
    this.a = a;
}

public int getter() {
    return this.a;
}

접근 지정자를 private로 설정해 놓으면 클래스 밖에서 변수나 매소드에 관여 할 수 없기 때문에 Getter와 Setter 매소드를 이용하여 접근 할 수 있도록 한다

느낀점


오늘은 상속과 캡슐화 방법에 대해 배웠다.

상속은 프로젝트 할 때 자주 사용해 본 적이 없어서
사실 이론으로만 알고 실습에서 사용 한 적은 별로 없었던 것 같다
그래도 큰 프로젝트를 하게 되면 사용하게 되지 않을까 생각한다.

캡슐화는 자주 사용했던 것 같다.
그중에 getter와 setter는 영혼의 단짝이라고 볼 수 있다.

getter와 setter를 자동으로 완성시켜 주는 기능도 있었던 걸로 기억한다.

객체지향 프로그래밍을 공부하면서 알고리즘 분야도 중요하지만
이런 개념과 틀을 세분화 시킬 수 있는 능력도 중요하다는 생각이든다.

빨리 프로젝트를 진행해보고 싶다,,,!!

댓글남기기