Java #3

yeolyeol·2024년 7월 17일
0

ssafy12

목록 보기
12/32
post-thumbnail

비구름이 역삼 멀캠을 왕따시킨 날


라이브 강의 #1

상속(inheritance: OOP is A P'I'E)

기존(상위) 클래스의 자산(멤버)을 자식(하위) 클래스에서 재사요하기 위한 것.

즉, 상위 클래스의 멤버를 물려받아 사용할 수 있으므로 코드의 재사용성이 증가(중복 감소)
상속 관계는 is a관계로 생각해도 됨.
ex) Person is a Object 등등등

사용법

extends 키워드를 class 명 옆에 붙이고 상속받을 상위 클래스를 정해주면 됨

예시

Object Class: 모든 객체의 최상위 객체

별도의 extends 키워드를 붙이지 않아도 컴파일러가 기본적으로 붙여줌.
Object에도 정의된 메서드가 많음. 따라서, 모든 객체는 Object의 메서드를 재정의 해서 사용 가능

주의

클래스 상속은 단일 상속
두개 이상의 클래스를 상속(처럼) 사용하고 싶다면, 하나를 제외한 나머지를 멤버로 선언한 후 사용


super

this 키워드는 자기 자신의 멤버를 접근했다면
super는 자기의 조상 클래스를 접근

깜짝 문제!


해당 코드를 실행했을 때의 결과는?

method
child
parent

super()

this()와 마찬가지로 생성자를 호출하는 개념인데, 다른 점은 조상의 생성자를 호출함.
this()나 super()가 없다면 컴파일러에서 자동으로 super()를 붙여줌
this()처럼 맨 첫줄이 아니면 컴파일 에러

예시

SpiderMan3라는 클래스는 Person2라는 클래스를 상속받고 있다.
SpiderMan3 클래스를 생성할 때 필요한 인자를 받고 있는데, name만 super(name)으로 처리하고 있다.
즉, 부모 클래스인 Person2의 name을 인자로 받는 생성자를 호출하는 것.
만약 super(name)이 없으면 super()가 자동 호출되는데, 부모 클래스인 Person2에는 기본 생성자가 없기 때문에 컴파일 에러가 발생함.


라이브 강의 #2

final

마지막, 더 이상 바꿀 수 없음.(진짜_레알_최종)

class

더 이상 확장할 수 없는 클래스
즉, 상속 금지 -> 오버라이드 금지

method

더 이상 재정의 할 수 없는 메서드
즉, Overriding 금지

variable

더 이상 값을 변경할 수 없음

Blank final

값이 할당되지 않은 멤버 변수
final String str;처럼 선언하면 null이 들어간 상태로 값을 변경할 수 없게 된다.
그럼 저 변수의 의미가 없어짐.
그래서!
Blank final 변수는 생성자에서 초기화를 강제하는 역할.
즉, 생성자에서 1회 초기화 가능하다.

접근 제한자

예시


추가

메서드 재정의(Method Overriding)의 조건

  • 메서드 이름이 같아야 함.
  • 매개 변수의 개수, 타입, 순서가 같아야 함.
  • 리턴 타입이 같아야 함.
  • 접근 제한자는 부모 보다 넓거나 같아야 함.
    • public > protected > package > private
    • 접근 제한자의 범위만 알면 굳이 외우지 않아도 됨.
  • 부모보다 더 큰 예외를 던질 수 없다.

느낀점

오늘 자바의 기본기가 많이 부족하다는 느낌을 받은 날이었다. 그만큼 배운 것도 많았다.

profile
한 걸음씩 꾸준히

0개의 댓글

관련 채용 정보