Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Java] 기타제한자 static / final / abstract 본문
정적(static) 멤버
(하나를 만들어서 공유하고 싶을 때 => 지역변수에는 사용불가)
vs 인스턴스(instance) 멤버
객체에 소속된 멤버이며, 객체를 생성해야만 사용할 수 있는 멤버이다.
※ 클래스 안의 메서드는 각 객체마다 존재하지 않고, 메서드 영역에 저장되어 공유된다.
(객체마다 메서드[코드의 덩어리]를 저장한다면 '중복저장'으로 인해 메모리 효율이 떨어진다.)
객체에 소속된 멤버이며, 객체를 생성해야만 사용할 수 있는 멤버이다.
※ 클래스 안의 메서드는 각 객체마다 존재하지 않고, 메서드 영역에 저장되어 공유된다.
(객체마다 메서드[코드의 덩어리]를 저장한다면 '중복저장'으로 인해 메모리 효율이 떨어진다.)
final
메서드에 사용: 오버라이딩 x, 상속 x => 부모가 될 수 없음, (단, 객체생성은 가능)
📌. '진정한 상수'란?
static final int CONSTANT = 100;
static과 final이 같이 붙은 변수가 '진정한 상수'라고 할 수 있다.
상수란 누가 써도 같아야 '진정한 상수'이다.
static이 안붙었을 때는 사용자마다 다른 값으로 초기화해서 그 값이 다를 수 있다.
즉, static을 붙여 하나만 만들어(변수를 만들고 초기화) 공유한다.
이게 진정한 상수다.
static final int CONSTANT = 100;
static과 final이 같이 붙은 변수가 '진정한 상수'라고 할 수 있다.
상수란 누가 써도 같아야 '진정한 상수'이다.
static이 안붙었을 때는 사용자마다 다른 값으로 초기화해서 그 값이 다를 수 있다.
즉, static을 붙여 하나만 만들어(변수를 만들고 초기화) 공유한다.
이게 진정한 상수다.
abstract
추상화만 시켜놓고, 누군가 가져다가 '구체화'시켜 원하는 기능을 만들어라
=> 재정의를 위해 만든다.
※ 변수 앞에 올 수 없다.
※ 메서드 앞에 오지만, 단, 바디가 없다 => 규격만 제공(추상화)
⚠️ abstract method를 가지고 있는 class는 반드시 abstract class로 선언되어야 한다.
abstract class는 규격의 역할을 하는 부모가 되기위해 존재한다.
자식클래스는 무조건 부모클래스에 선언된 abstract method를 재정의해야한다.
-> 상속 -> 다형성 및 유지보수
abstract class는 규격의 역할을 하는 부모가 되기위해 존재한다.
자식클래스는 무조건 부모클래스에 선언된 abstract method를 재정의해야한다.
-> 상속 -> 다형성 및 유지보수
'Backend > 자바' 카테고리의 다른 글
[Java] 객체지향언어 Java (0) | 2023.04.17 |
---|---|
[Java] 인터페이스와 구현객체, Collections (0) | 2023.04.09 |
[Java] Immutable Object(불변객체) String과 StringBuilder (0) | 2023.04.07 |
[Java] 상속관계와 Polymophism, 오버라이딩(Overriding) (0) | 2023.03.13 |
[Java] 정보은닉과 Getter, Setter (0) | 2023.03.13 |
Comments