오늘 하루는 java랑 js 위주로 공부하였습니다.
하지만 java를 중점으로 공부하고 있어서 오늘도 TIL에 java 관련 기록을 남기겠습니다.
Java
인터페이스 구현
- 인터페이스는 자신에 정의 된 추상메서드의 몸통을 만들어주는 클래스를 작성해야 한다.
- 클래스는 extends 키워드를 사용했지만 인터페이스는 implements를 사용해야 한다.
- 오버라이딩 : 조상의 메서드보다 넓은 범위의 접근 제어자를 지정해야 하는 것
- 인터페이스를 이용한 다형성
- 인터페이스 역시 구현한 클래스의 조상
- 즉 해당 인터페이스 타입의 참조변수로 이를 구현한 클래스의 인스턴스를 참조할 수 있다.
- 그리고 인스턴스타입의 매개변수를 가질 수 있다.
- 메서드 호출 시 해당 인터페이스를 구현한 클래스의 인스턴스를 매개변수로 제공해야 한다는 것을 의미
- 리턴값이 인터페이스 타입일 수 있다.
- 리턴타입이 인터페이스라는 것은 매서드가 해당 인터페이스를 구현한 클래스의 인스턴스를 반환한다는 것을 의미!
- 매개변수를 통해 인터페이스를 구현한 클래스의 인스턴스를 동적으로 제공받는 경우
interface I {
public abstract void methodB();
}
class A {
public void methodA(I i){
i.methodB();
}
}
class B implements I {
public void methodB(){
System.out.println("methodB in B class");
}
}
- 제3의 클래스를 통하여 인터페이스를 구현한 클래스의 인스턴스를 얻는 경우
interface I {
public abstract void methodB();
}
class A {
public void methodA(){
I i = InstanceManger.getInstance();
i.methodB();
}
}
class B implements I {
public void methodB(){
System.out.println("methodB in B class");
}
}
class InstanceManger {
public static I getInstance(){
return new B();
}
}
디폴트 메서드와 static 메서드
JDK 1.8 이후 interface에 허용된다.
내부 클래스 inner class
- static class 만 static 변수를 가질 수 있다.
- final static은 상수이므로 모든 내부 클래스에서 사용할 수 있다.
- 내부 클래스는 외부 클래스의 멤버와 같이 간주된다. 즉 규칙도 똑같이 적용된다.
- 지역 클래스가 포함된 메서드에 정의된 지역변수도 사용할 수 있다. 단, final 이 붙은 지역 클래스가 포함된 메서드에 정의된 지역변수도 사용할 수 있다. 단, final이 붙은 지역변수만 접근 가능
- 지역변수가 소멸된 시점에 지역 클래스의 인스턴스가 해당 지역변수를 참조하는 경우가 있음…
- 내부 클래스와 외부 클래스에 선언된 변수 이름이 같을 경우 변수 앞에 this 또는 외부 클래스명. this를 붙여 구별할 수 있다.
- 익명 클래스
- 클래스 선언과 객체 생성을 동시에 동작함 → 일회용 클래스
- 오로지 단 하나의 클래스를 상속받거나 단 하나의 인터페이스만 구현할 수 있다.
- 클래스 명이 없음 → 컴파일 시 : 외부 클래스명$숫자. class
new Parent() { // member 선언 } new Interface() { // memeber 선언 }
학습자료 : https://github.com/seunghyeokleeme/java-study/commit/21de29eb2d72b303416ab8c7733804e411e21cc1
ch07 학습 완료 · seunghyeokleeme/java-study@21de29e
Show file tree Showing 15 changed files with 456 additions and 0 deletions.
github.com
'Thoughts & Opinions' 카테고리의 다른 글
자바스크립트 배열의 인덱스 접근 성능은 일반적인 배열과 비교하여 느릴까? (0) | 2023.05.28 |
---|---|
2023.04.19 TIL (0) | 2023.04.19 |
2023.04.18 TIL (0) | 2023.04.18 |
기록 시작... (0) | 2023.03.02 |
댓글