상속

가언·2024년 7월 4일

✅ 부모/자식 클래스

질문 리스트

  1. 상속관계를 결정하는 클래스는 누구인가요?
    자식클래스 extends 부모클래스-> 프로그래밍 세상에서는 자식이 부모를 선택함!
  2. 생성자도 상속되는 걸까요? 아니요!!
    자식 클래스의 생성자내에 super();이 생략되어 있는 상태이므로 생성자가 상속된 것이 아니라, 부모 클래스의 생성자를 호출하는 것이다. super();는 매서드가 아니라 부모 클래스의 생성자를 호출하는 키워드일뿐,,
  3. 아래 네모는 객체입니다. A, B중 누가 부모이고, 자식일까요?
    A: 부모 클래스, B: 자식 클래스 자식클래스는 선택한 부모클래스의 멤버들을 모두 사용할 수 있으며, 확장해 추가해서 사용하거나 덮어 사용 가능하기 때문이다.

더 넓은 범위로 덮어쓰기가 가능함:
public-> public🅾️
public->private ❌

✅ 상속이란?

부모 클래스의 멤버를 자식 클래스가 그대로 사용할 수 있는 것
부모 클래스의 멤버를 자식 클래스가 상속(그대로 사용, 추가해서 사용하거나, ...) 받는 것: 확장한다 "extends"
cf) 부모-자식, 상위-하위, 슈퍼-서브


public class Galaxy extends Phone{
	//super() 부모 생성자를 호출하는 것!
    public Galaxy(){
       super(); //생략된 것
   }
   public static void main(String[] args) {
       Phone galaxy = new Galaxy("Samsung");
       galaxy.turnOn();
   }
}

Q. @Override를 쓰는 이유? annotation: 주석

A. 컴파일 에러를 잡아주는 용도이다.



부모 클래스의 메소드의 매개 변수의 개수나 타입이 달라지면 override에 빨간줄이 생겨 컴파일 오류를 잡아줄 수 있다.

✅ 오버라이드란?

슈퍼 클래스로부터 상속받은 메소드의 내용을 변경하는 것
[조건]

  • 접근제한 범위를 동일하게 두거나 또는 넓혀서
  • 메소드 이름/매개 변수/반환 타입 동일

✅ 누군가 오버로딩과 오버라이딩의 차이를 물어본다면?

두 가지 비슷한 개념은 아니지만, 문법적으로 비슷한 것 같다.
차이: 상속 관련 유무, 오버로딩은 상속과 관련이 있지만, 오버라이딩은 상속과 관련이 없음.
오버로딩 -> 하나의 함수가 여러개의 매개 변수 타입을 받아서 처리하는 것
오버라이딩 -> 하나의 함수가 부모클래스로부터 상속받은 메소드를 확장에서 사용하는 것

profile
@gari_guri

0개의 댓글