SEB_BE_43 / 22.12.29 회고

rse·2023년 1월 2일
0

코드스테이츠_BE_43

목록 보기
9/65

Java 객체 프로그래밍 심화

오늘 핵심

  • 상속
  • 캡슐화

상속

상위 클래스와 동일한 기능을 써야 할 경우 재사용하는 것을 뜻한다.

상속은 공통된 객체를 써야 할 경우 유용하게 쓸 수 있다.
extends 를 사용해서 쓸 수 있다.

만약 친구라는 클래스를 만들 때 이름, 나이, 직업 같은 누구나 있는 것을 Hon 이라는 클래스에도 만들어줘야 하고, 또 다른 클래스에도 만들어 줘야한다면 코드도 길어지고 중복 코드가 발생 할 것이다.

이럴 때 extends를 사용해서 Friend 클래스에 있는 기능을 Hon 클래스에 가져오면 매우 편리해진다.

출력 결과도 같은 걸 볼 수 있다.

포함 관계

포함관계는 상속을 했을 때 사용할 수 있는건 아니다. 하지만 알아두면 좋다고 한다.
포함관계는 클래스의 멤버로 다른 클래스 타입의 참조변수를 선언하는 것.


이럴 때 코드를 실행해보면

이렇게 결과가 나오는 것을 볼 수 있다.

메서드 오버라이딩

메서드 오버라이딩은 상속 받은 상위 클래스에 있는 메서드의 내용을 변경할 수 있는 것이다.

위 사진처럼 Friend 클래스에서 subway이라는 메소드가 있는데
Friend 클래스의 상속을 받은 Hon이라는 클래스에 subway메서드를 변경해주니

이렇게 변경된 것을 볼 수 있다.

메서드 오버라이딩을 하기 위해서는 조건이 필요하다.

  • 메서드 명이 같을 것. 갯수, 타입도 같을 것.
  • 예외는 상위 클래스의 메서드보다 많이 작성할 수 없다.
  • 접근 제어자의 범위가 상위 클래스보다 같거나 넓어야 한다.

여기서 접근 제어자는 나도 아직 안배워서 모른다.
그냥 코드를 작성할 때 쓰는 public이라는 것 정도..?

예외는 예외도 배우진 않았지만 구글링해서 보니 try catch 이런거 인 듯 싶다.
while문 같은 반복문에서 쓰이는...

super 과 super()

super과 super() 은 어제 배운 this / this() 와 비슷하다.

super = 상위 클래스의 객체
super() = 상위 클래스의 생성자

다만 this = 자신의 객체
this() = 자신의 생성자 호출

에서 상위로 변경 되었다는 점이 다르다.

SubClass가 SuperClass에게 상속을 받아서 this.count와 super.count를 출력해주고 있다. super는 자신의 상위 클래스에 객체를 부르기 때문에 20이 출력된다.


캡슐화

캡슐화란?

객체를 외부로부터 보호하고, 메서드를 감출 수 있다.

패키지 & import

패키지란 클래스들을 그룹으로 묶어 효율적으로 관리 할 수 있게 하는 것이다.
폴더라고 생각하면 편함.

import는 다른 패키지를 불러올 때 쓸 수 있다.

접근제어자

우리가 자주 썼던 public은 아주 프리한 친구다.

그리고 앞에 접근 제어자를 붙여주지 않으면 자동으로 default가 붙는다.

protected는 같은 클래스와 다른 패키지의 하위 클래스 까지 가능.

private 는 같은 클래스 내에서 밖에 사용이 불가능하다.
그래서 private에 접근을 하려면 getter & setter를 사용해서 접근이 가능하다.

getter & setter

setter는 값을 변경, 수정해주고
getter는 setter에 저장된 값을 출력해주는 일을 한다.


출력값이 잘 나오는걸 볼 수 있다.

setter를 사용해서 person name부분에 "홍길도" 라는 값을 넣어줬고
getter를 통해서 name에 저장되어 있는 "홍길도"를 출력해줬다.

profile
기록을 합시다

0개의 댓글