상속

J-USER·2021년 10월 11일
0

JAVA

목록 보기
4/5
post-thumbnail

상속이 왜 필요한데?

상속은 자바를 하지 않아도 객체지향 언어의 핵심 개념입니다. 개발자라면 '아니 왜 필요한데?' 라는 의문을 가져야합니다.

핵심부터 말하자면, 상속은 코드 중복을 제거하여 클래스를 간결하게 구현할 수 있게한다.

자바 상속의 특징

  1. 자바 클래스는 다중 상속을 지원하지 않는다

  2. 자바는 상속의 횟수에 제한을 두지 않는다.

  3. 최상위 클래스는 java.lang.Object 이다.

상속 접근 지정자

슈퍼클래스에 대한 접근 지정자👇

슈퍼클래스의 멤버에 대한 서브클래스 접근 👇

업캐스팅과 다운캐스팅

업캐스팅

Person p = new Student();
위와 같이 Student 객체는 Person 타입으로 업캐스팅이 된다면, Person 타입의 객체로 취급되어 Student 객체의 필드나 메소드에 접근할 수 없게 된다.

업캐스팅은 명시적으로 타입을 변환하지 않아도 되기때문에 Student 객체는 Person의 객체를 가지고 있기 때문이다.

🙋 좀 헷갈리는데요..?
🤖 Student는 Person이 아닌가요?
🙋 학생도...인간이죠..?
🤖 그렇다면 Person은 모두 Student 인가요?
🙋 아니요...?
🤖 그러니까 Student는 Person에서 추가적인 "조건" 이 필요합니다.
🙋 그래서요..?
🤖 (ㅂㄷㅂㄷ) 자 10짜리 바구니에 100의 물을 뿌리면 어케됨?
🙋 10의 바구니가 가득 차겠죠..?90은 못담겠지만..
🤖 그러니까 가득찬 바구니는 사용이 가능한거죠.

다운캐스팅

Student s = (Student)new Person();
위는 반대로 다운캐스팅이 된다면, Student 레퍼런스를 리턴하면서 Person도 Student에 접근이 가능하게 됨.

변수의 종류와 예약어

타입에 따른 분류 👇

선언 위치에 따른 분류 👇

static 예약어 👇

final 예약어 👇

final이 붙은 변수는 단 한번만 초기화가 가능하고 그 후에는 값을 변경할 수 없는 상수를 의미한다.
변수에 붙으면 상수가 도고 메서드 앞에 붙으면 오버라이딩이 금지되며 클래스는 상속을 금지시킨다.

profile
호기심많은 개발자

0개의 댓글