- 강의
- 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() 생성자가 자동 호출됨
{ ... 생성자 코드들 ... }
}
}
- public class Child extends Parent {
- shadowing 현상
- 변수는 오버라이드 X
- 자식 클래스의 변수명과 부모 클래스의 변수명이 동일할 경우, 자식 클래스 변수가 부모 클래스 변수에 의해서 가려지는 현상
- 현업에서는 거의 발생 X
- 여러 클래스 관련 표현들
- base class ↔ derived class
- superclass ↔ subclass
- parent class ↔ child class
- 묵시적 형변환(= 업 캐스팅)
- 자식 클래스는 부모 클래스로 묵시적 변환 가능
- 오버라이드된 메서드는 자식 크래스의 메서드 실행
- 확장된 메서드(자식 클래스에서 추가한 메서드) 또는 확장된 필드(자식 클래스에서 추가한 변수)는 사용 X
- ex) 부모클래스 __이름__ = new 자식클래스();
'슈퍼코딩 > 주특기(JAVA)' 카테고리의 다른 글
2024.05.03(금) 슈퍼코딩 신입연수원 5주차 Day 5 후기 - 추상 클래스, 인터페이스 (0) | 2024.05.03 |
---|---|
2024.05.02(목) 슈퍼코딩 신입연수원 5주차 Day 4 후기 - 다형성 (0) | 2024.05.02 |
2024.04.30(화) 슈퍼코딩 신입연수원 5주차 Day 2 후기 - 정보은닉 (0) | 2024.04.30 |
2024.04.29(월) 슈퍼코딩 신입연수원 5주차 Day 1 후기 - OOP, 메서드, 클래스 (0) | 2024.04.29 |
슈퍼코딩 신입연수원 4주차 후기 (0) | 2024.04.29 |