basic/java 이론

day 12 - 상속 inheritance

못지(Motji) 2021. 5. 7. 16:11

static

클래스멤버(클래스변수, 클래스메서드) 만들때 사용되는 키워드

 

✔ 특징

  • 프로그램 종료까지 계속 남아있음
  • static 메서드는 객체 생성없이 바로 사용가능
  • → static 메서드는 static 멤버만 접근 할 수 있다.
  • → this를 사용 할 수 없다

상속 inheritance

  • 클래스와 클래스 사이 1:1의 부모자식 관계를 만듬
  • 자바 다중상속은 안됨
  • 상속은 부모의 변수, 메서드를 물려 받는것
  • 생속 시, 생성자와 초기화 블럭은 제외
  • 상속 키워드 : extends
  • 상속을 받으면 부모의 멤버들(변수, 메소드) 복사해서 자식이 담게된다. (눈에 안보이지만 가지고 있다)
  • 자식은 부모의 것과 함께 자식만의 변수와 기능을 더 갖게 될 수 있음 → 확장
  • 필요한 이유 : 코드 중복을 제거 → 클래스를 간결하게 구현, 유지보수 편함, 소프트웨어 생산성 향상

💡 부모클래스 = super = parent = base

💡 자식클래스 = sub = child = derived

Object 클래스

  • 모든 클래스의 조상
  • 자바에서 상속을 하나도 안받은 클래스라도 자동으로 Object 클래스를 상속 받는다. 그래서 모든 클래는 Object 클래스의 멤버를 모두 사용 할 수 있다.
  • Object 클래스는 11개의 메소드만 가지고 있다.
  • 클래스안에 아무것도 없는 객체를 만들어도 Object 클래스 용량만큼 메모리를 차지한다.

상속과 접근제어자

✔ 수퍼클래스의 private 멤버

  • 오직 수퍼클래스의 멤버들에게만 접근 허용
  • 서브클래스 포함 다른 클래스에서 접근 불가능

✔ 수퍼클래스의 default 멤버

  • 패키지 내 모든 클래스가 접근 가능
  • 서브클래스라도 다른 패키지면 접근 불가능

✔ 수퍼클래스의 public 멤버

  • 모든 클래스에서 접근 가능

✔ 수퍼클래스의 protected 멤버

  • 같은 패키지에 속한 모든 클래스 접근 허용
  • 패키지 상관없이 서브클래스 접근 허용

final

✔ final 클래스

클래스 앞에 붙으면, 상속할 수 없음을 지정함

✔ final 메서드

메서드 앞에 붙으면, 오버라이딩 할 수 없음을 선언함

✔ final 변수

변수앞에 붙으면, 상수가 된다.

상수는 한번 초기화가 되면 값을 변경 할 수 없다.

👀 final 키워드를 public과 함께 선언하면 프로그램 전체에서 사용할 수 있는 상수가된다.

ex) public static final double PI = 3.14...;