슈퍼코딩/주특기(JAVA)

2024.05.01(수) 슈퍼코딩 신입연수원 5주차 Day 3 후기- static, 상속

곰돌이볼 2024. 5. 1. 16:56
  • 강의
    • 29강(객체간의 협력) ~ 32강(객체의 상속)

Static


  • 여러 객체들이 공유하는 값을 선언하기 위한 예약어 
  • 데이터 영역 메모리에 static 값이 저장되어 있고, 각 객체들은 static 값을 읽음으로써 공유
  • static 변수(= 정적 변수, 클래스 변수)
    • 프로그램 실행 시 생성되는 정적 변수로, 인스턴스를 생성하기 전에 정의되어 있음
    • "클래스명.정적변수" 와 같은 형태로 호출 가능
  • static 메서드
    • static 변수만 호출해서 사용가능, 인스턴스 변수는 사용 불가능
  • static 블록
    • 클래스 내에 static으로 블록 선언
    • 클래스 로딩 시 자동 실행
class Test {
	static {
    	System.out.println("동작");
    }
}

 

  • 변수
    • 클래스 변수(static 변수) : static이 붙은 변수, 프로그램 시작 시 데이터 영역에 생성되고 메모리 해제할 때 소멸됨
    • 인스턴스 변수(멤버 변수) : 클래스의 멤버 변수, 인스턴스가 생성될 때 힙에 생성되고 가비지 컬렉터가 메모리를 수거할 때 소멸됨
    • 로컬 변수(지역 변수) : 메소드 내에서만 동작하는 변수, 함수 호출 시 생성되고 함수가 종료되면 소멸됨

상속


  • 자식 클래스는 부모 클래스의 변수와 메소드들을 받아서 사용가능
  • 선언 : extends
  • 단일 상속
  • 오버 라이드(override) : 부모 클래스의 메소드를 자식 클래스에서 재정의, @override 어노테이션 이용
  • super : 부모 클래스의 인스턴스를 가리키는 예약어(자식 클래스의 this와 유사)
  • 장점
    • 코드 재사용성 ↑
    • 유지 보수성 ↑
  • 자식 클래스의 생성자를 생성할 때, 자동적으로 부모 클래스의 생성자가 호출되어 사용됨
    • public class Child extends Parent {
              public Child() { // 자식 클래스의 생성자
                       // Parent() 생성자가 자동 호출됨
                       { ... 생성자 코드들 ... }
               }
      }
  • shadowing 현상
    • 변수는 오버라이드 X
    • 자식 클래스의 변수명과 부모 클래스의 변수명이 동일할 경우, 자식 클래스 변수가 부모 클래스 변수에 의해서 가려지는 현상
    • 현업에서는 거의 발생 X
  • 여러 클래스 관련 표현들
    • base class ↔ derived class
    • superclass ↔ subclass
    • parent class ↔ child class
  • 묵시적 형변환(= 업 캐스팅)
    • 자식 클래스는 부모 클래스로 묵시적 변환 가능
    • 오버라이드된 메서드는 자식 크래스의 메서드 실행
    • 확장된 메서드(자식 클래스에서 추가한 메서드) 또는 확장된 필드(자식 클래스에서 추가한 변수)는 사용 X
    • ex) 부모클래스 __이름__ = new 자식클래스();