'final'에 해당되는 글 2건
상속_1(상속, override, final)
상속(nheritance)
부모가 자식에게 물려주는 행위.
자식은 상속을 통해 부모가 물려준 것을 자연스럽게 이용 가능. 상위 클래스, 하위 클래스
부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외, 부모와 자식 클래스가 다른 패키지 내에 존재한다면 default 접근 제한 갖는 필드와 메소드도 상속 대상에서 제외
- 클래스 상속 : 자식 클래스 선언 할 때 어떤 부모 클래스를 상속받을 것인지 결정하고 선택된 부모 클래스는 extends 뒤에 기술. 다중 상속 허용 안 함
- 부모 생성자 호출 : 부모 객체가 먼저 생성되고 자식 객체가 그 다음에 생성됨 -> 모든 객체는 클래스의 생성자 호출해야만 생성됨
- super() : 부모의 기본 생성자 호출, 즉 첫번째 생성자 메소드 호출함. 매개변수 있을 시 같은 타입의 부모 생성자 호출
메소드 재정의 : 상속된 일부 메소드는 자식 클래스에서 다시 수정해서 사용해야 함. -> 메소드 오버라이딩
@Override : 상속된 메소드의 내용이 자식 클래스와 맞지 않을 경우, 자식 클래스에서 동일한 메소드를 재정의 하는 것
메소드를 오버라이딩 되었다면 부모 객체의 메소드는 숨겨지기 때문에, 자식 객체에서 메소드 호출하면 오버 라이딩 된 자식 메소드 호출됨
- 부모 메소드와 같은 시그너처(리턴 타입, 메소드 이름, 매개 변수 리스트) , 접근 제한을 더 강하게 오버라이딩 불가, 새로운 예외(Exception)를 throw 할 수 없음
부모 메소드 호출
- super() : 자식 클래스에서 부모 클래스 메소드 오버라이딩 하게 되면, 부모 클래스의 메소드 숨겨지고, 오버라이딩 된 자식 메소드만 사용 -> super. 부모 메서드();
- 부모 객체 참조하기 때문에 부모 메소드 직접 접근 가능
- final : 클래스, 필드, 메소드 선언 시 사용할 수 있음. 해당 선언이 최종 상태, 수정될 수 없음
- final 클래스 : 상속 할 수 없음
-> 부모 클래스 될 수 없고 자식 클래스 만들 수 없음 ex) public final class 클래스 이름{}
- final 메소드 : 오버 라이딩할 수 없음 -> 부모에서 선언된 메소드는 자식 클래스에서 재정의 할 수 없음 ex) public final 리턴 타입 메소드 () {}
- protected : public과 default 접근 제한의 중간 쯤 위치, 같은 패키지 내에서는 접근 제한 없지만 다른 패키지에서는 자식 클래스만 접근 허용
'Code > JAVA' 카테고리의 다른 글
| 배열 예제_숫자 출력 (0) | 2019.06.18 |
|---|---|
| 상속_2(다형성, 추상 클래스) (0) | 2019.06.18 |
| 클래스_5(패키지) (0) | 2019.06.18 |
| 클래스 예제_계산기 (0) | 2019.06.18 |
| 클래스 예제 (0) | 2019.06.18 |
클래스_4(싱글톤, final)
싱글톤(singleton) : 단 하나의 객체만 만들도록 보장해야하는 경우
-> 외부 클래스에서 new 연산자로 생성자를 호출 할 수 없어야함
생성자 앞에서 private 사용하면 된다
- ex) public class 클래스 이름{
private static 클래스 이름 singleton = new 클래스 이름();
private 클래스 이름(){}
static 클래스 이름 getInstance(){
return singleton
}
}
- main에서 사용 할 때 : 클래스이름 변수1 = 클래스이름.getInstance(); -> 두개 만들어도 하나만 생성되서 같은 객체가 됨
final : 최종적이란 뜻. 필드에 초기값 저장되면 최종적인 값이 되어 수정 불가 ex) final 타입 필드 [=초기값];
- 초기값 주는 법 : 1. 필드 선언 시 주는 방법 2. 생성자에 주는 방법
상수(static final) : 불변의 값. 대문자로 사용 ex) static final 타입 변수 [=초기값];
-<이것이 자바다1>. 한빛 미디어
'Code > JAVA' 카테고리의 다른 글
| 클래스 예제_계산기 (0) | 2019.06.18 |
|---|---|
| 클래스 예제 (0) | 2019.06.18 |
| 클래스_3(정적, 인스턴스) (0) | 2019.06.18 |
| 클래스_2(필드, 생성자,메소드) (0) | 2019.06.18 |
| 클래스_1(클래스와 객체) (0) | 2019.06.18 |