10/10

Seunghee Ryu·2023년 10월 10일
0

TIL

목록 보기
6/15

변수의 초기화

변수의 초기화

  • 멤버변수와 배열의 초기화는 선택적이지만 지역 변수의 초기화는 필수적이다
    - 멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어진다
  • 멤버변수의 초기화 방법
    - 명시적 초기화
    • 생성자
    • 초기화 블럭
      • 인스턴스 초기화 블럭
      • 클래스 초기화 블럭

명시적 초기화

  • 변수를 선언과 동시에 초기화하는 것을 명시적 초기화라고 한다
  • 보다 복잡한 초기화 작업이 필요할 때는 초기화 블럭 또는 생성자를 사용해야 한다

초기화 블럭

  • 초기화 작업이 복잡하여 명시적 초기화만으로는 부족한 경우 초기화 블럭을 사용한다
  • 클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 한번만 수행되며, 인스턴스 초기화 블럭은 생성자와 같이 인스턴스를 생성할 때마다 수행된다
  • 생성자보다 인스턴스 초기화 블럭이 먼저 수행된다
  • 인스턴스 변수의 초기화는 주로 생성자를 사용하고, 인스턴스 초기화 블럭은 모든 생성자에서 공통으로 수행돼야 하는 코드를 넣는데 사용한다

멤버변수의 초기화 시기와 순서

  • 클래스 변수의 초기화 시점 : 클래스가 처음 로딩될 때 단 한번 초기화 된다
  • 인스턴스 변수의 초기화 시점 : 인스턴스가 생성될 때마다 각 인스턴스 별로 초기화가 이루어진다
  • 초기화 순서
    - 스태틱 변수 : 기본가 -> 명시적 초기화 -> 클래스 초기화 블얻
    - 인스턴스 변수 : 기본값 -> 명시적 초기화 -> 인스턴스 초기화 블럭 -> 생성자

상속

상속의 정의와 장점

  • 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것
  • 코드의 추가 및 변경이 매우 용이
  • 코드의 재사용성을 높이고 중복을 제거하여 생산성과 유지보수에 크게 기여
  • extends(확장)
  • 조상 클래스 : 부모 클래스, 상위 클래스, 기반 클래스
  • 자손 클래스 : 자식 클래스, 하위 클래스, 파생된 클래스
  • 자손 클래스 안에 조상 클래스가 포함되어 있다
  • 자손 클래스는 조상 클래스의 모든 멤버를 상속받음
  • 조상 클래스가 변경되는 것은 자손 클래스에 영향을 준다
  • 자손 클래스가 변경되는 것은 조상 클래스에 아무런 영향을 주지 못한다
  • 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다
  • 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다
  • 접근 제어자가 private 또는 default인 멤버는 상속되지 않는다기보다 상속은 받지만 자손 클래스로부터 접근이 제한된다
  • 자손 클래스의 인스턴스를 생성하면 조상 클래스의 멤버와 자손 클래스의 멤버가 합쳐진 하나의 인스턴스로 생성된다

클래스 간의 관계 - 포함관계

  • 상속 이외의 클래스 재사용 방법
  • 클래스 간에 포함 관계를 맺어주는 것
  • 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것

클래스간의 관계 결정

  • 상속일 경우 : ~은 ~이다
  • 포함일 경우 : ~은 ~을 가지고 있다

단일 상속

  • 자바는 단일 상속만을 허용한다
  • 다중 상속의 경우 여러개의 조상 클래스에 동일한 메서드명이 존재할 경우 문제가 발생하게 된다
  • 이러한 문제점을 해결하기 위해 단일 상속만을 허용한다

Object 클래스 - 모든 클래스의 조상

  • 최상위 조상은 Object 클래스
  • 이미 어떤 클래스로부터 상속받도록 작성된 클래스에 대해서는 컴파일러가 extends Object를 추가하지 않는다

0개의 댓글