상속이란 ?
- 기존 클래스의 멤버를 자식 클래스에서 재사용하기 위한 것
- 코드의 절감과 유지보수의 장점이 있음
- 자바는 단일 상속만 지원
메서드 오버라이딩
- 조상 클래스에 정의된 메서드를 자식 클래스에서 적합하게 수정하는 것
- 조건 ★중
- 메서드 이름이 같아야 한다
- 매개 변수의 개수, 타입, 순서가 같아야 한다
- 리턴 타입이 같아야 한다
- 접근 제한자는 부모보다 범위가 넓거나 같아야 한다(부모랑 달라도 되긴 함 )
- 조상보다 더 큰 예외를 던질 수 없다.
super
- super를 통해 조상 클래스의 멤버에 접근 가능하다
- super()를 통해 조상클래스의 생성자를 호출가능하다
- 생성자 첫줄에만 this() 또는 super()가 올 수 있다.
- 명시적으로는 this()또는 super()를 호출하지 않는 경우 컴파일러가 super()삽입
- static 메소드는 재정의 되지 않는다!!!!! (오버라이딩 하지 않는다는 의미이다)
final modifier
- final은 재정의 되지 않음 (상수라고 생각해 ex 불변하는 파이)
instanceof 연산자
- 객체 식별 연산자
- 형식 ))) 레퍼런스 변수 instanceof 클래스명
- 리턴타입 boolean
- 해당 변수명으로 클래스를 참조할 수 있다면 true 리턴
싱글톤 디자인 패턴
- 객체의 생성을 제한해야 할 떄 사용
- 여러개의 객체가 필요 없는 경우
- 객체 생성/삭제 하는데 많은 비용이 들어 재사용이 유리한 경우
- 가장 쉬운 싱글톤 방법 (Eager Initialization)
- 생성자를 private으로 만들어 접근 못하게 만듬
- class를 로딩할때 객체가 하나 만들어지게함
- 그 객체를 가져오는 getInstance()를 만듬
- 교수님이 알려준 FM싱글톤 방법 (Lazy Initialization)
- getlnstance를 호출할떄마다 객체가 생성되어있는지 안되어있는지 확인 후 생성되어있다면 생성된 객체를 반환하고 안되어있다면 그제서야 만듬
- BIll Pugh 가 고안한 싱글톤 방법(구글링 하니까 방식이 가장 널리 쓰인다고 함 [진실인지는 모름])
public class Singleton{
private Singleton(){}
private static class SingletonHelper{
private static final Singleton INSTANCE = new Singleton();
//이너클래스에서는 외부클래스 private(생성자)도 접근이 가능하다.
}
privte static Singleton getInstance(){
return SingletonHelper.INSTANCE;
}
}
후기 : 추후 DB를 연결할때 싱글톤 패턴을 사용할 것으로 보인다. 잘 숙지해두자. 또한 상속의 정의와 오버라이딩 규칙같은 것은 외워두어야 할듯?
'[JAVA]' 카테고리의 다른 글
추상 클래스 (abstract , interface) (0) | 2023.01.21 |
---|---|
Polymorphism (0) | 2023.01.21 |
Abstraction + @ (추상화와 그 외의 중요한 것들) (0) | 2023.01.17 |
NullPointerException (0) | 2022.12.22 |
discord로 IntelliJ하는거 티내는 방법 (0) | 2022.12.21 |