상속과 Super

이동언·2024년 7월 18일

new world

목록 보기
7/62
post-thumbnail

7.15 (월)

1. Record

👉 클래스를 더 쉽게 사용하는것.
👉 text, answer와 같은 구성요소를 갖는다.
👉 자체적으로 final로 선언된 필드를 가지며, 불변객체를 생성함.
👉 생성자를 자동으로 생성해준다.

🌳 Record를 이용하여 생성자를 별도로 생성하지 않고
🌳 toString(), equals,와 같은 메소드를 자동으로 지원해준다.



2. enum

👉 미리 결정된 값 객체
👉 결국 INSTANCE가 객체인데, 미리 객체를 몇개 생성할지 정해둬야한다.
👉 기존의 객체생성하는 방법인 NEW를 사용하지 않는다.




2-1. enum과 접근제어자

public PoweConsume
👉 생성자 생성시에 접근제어자가 안되는 이유는, enum은 해당 구간에서만 객체를 만들 수 있기 때문에 다른 구간에서는 객체를 생성 할 수 없도록 접근제어자 자체를 제한한다.

2-2. enum사용시 main에서 사용법

main{
sout(PowerConsume.STEP1);
}



3-1. 싱글턴 방식

👉 INSTANCE라는 객체를 한개만 만들어놓고 사용하는것

3-2. 다형성

📌 다형성은 상속과 인터페이스 두가지
👉 다형성 하나의 타입이 여러 종류의 객체를 가르킨다.
👉 내 코드를 고칠 필요가 없다.
👉 하나의 자주포에 여러 탄환이 들어갈수있는 개념과 비슷

📌 이때까지는 Movie movie = new Movie()와 같이 데이터타입과 생성되는 객체의 형태가 똑같았지만, 상속이 들어갈때부터 변경될 수 있다.
📌 이제부터는 Type은 컴파일러가 보고, 컴파일러가 체크하는 용도로 생각하자.


ex) 럭셔리(Data Type) 라는 가방안에는 구찌, 루이비통, 보테가(객체) 등이 들어갈 수 있다.
원래는 가방 이름을 구찌로 만들었으면 구찌만 들어갈 수 있었지만, 럭셔리로 이름을 변경하여 더 많은 종류들이 들어갈 수 있게 되었다.
👉 유지보수 및 재사용성 좋아짐



4. 상속

👉 속성, 상태 등 물려줄수있고 코드를 줄이기 위해 사용한다.
👉 기존의 코드를 가져와 추가적인 기능을 넣을 수 있다.

4-1. 상속과 생성자의 관계(Super)

👉 super( ) -> 부모의 생성자
👉 super.xxx -> 부모의 속성/메소드호출
👉 ChRest라는 상위 클래스가 있고, seoulRest라는 하위 클래스가 있을때, 상위 클래스인 ChRest의 생성자를 생성하면

👆 이런식으로 매개변수가 들어간다면 SeoulRest클래스에서 오류가 발생한다.
그 이유는 ChRest클래스가 매개변수가 들어가지 않은 기본생성자인 경우 jvm에서 생성되는것과 똑같으니 문제가 없는다.
하지만 매개변수가 들어가면 하위 클래스에서 호출을 해줘야 하는 상황이 발생한다.

👆 그럴때는 super를 사용하여 부모클래스의 생성자를 상속한다.

4-2. super error

👉 부모에서 매개변수가 들어간 생성자를 만들게 되면 에러가 발생
👉 하지만, 자식에서 부모의 생성자에서 super를 사용하면 에러가 발생하지 않는다.



5. 상속에서의 오버라이딩

<ChRest rest1 = new ChRest();
rest1.makeZazang();
ChRest rest2 = new SeoulRest();
rest2.makeZazang();
🌳 rest2를 출력했는데 컴파일러에서는 ChRest를 보고 출력을 했는데 알고보니 SeoulRest( )를 출력이 되는것.
🌳 데이터 타입은 컴파일러를 속이는 목적.



6. 데이터 위주 상속 / 로직 위주 상속

6-1. 로직 위주 상속

🌳 오버라이드의 개념이 중요
🌳 상위클래스에는 공통된 기능을 구현하고, 하위 클래스에서는 해당 기능에 대해 추가하거나 재정의 할 수 있다.
🌳 클래스를 여러개 만들어 구조한다.

6-2. 데이터 위주 상속

🌳 사람이 부모 (이름,나이), 학생은 자식 (이름,나이,학번,학교) 처럼 데이터가 추가될 때
🌳 클래스를 한 개 만들어 구조한다.




7. 상속 팁

📌 맨 처음부터 상속 할 생각하지말고, 클래스를 만들어놨다가 공통적인 성질이 있을때 상속을 시도하자.

0개의 댓글