□ abstract(추상 메소드)
추상 클래스는 상속을 강제하기 위한 것이다.
즉 상위 클래스에는 메소드의 시그니처만 정의해놓고
그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 하위 클래스의 책임으로 위임하고 있다.
abstract class A{
public abstract int b();
public void d(){
System.out.println("world");
}
}
메소드 b의 선언 부분에는 abstract라는 키워드가 등장하고 있다.
이 키워드는 메소드 b는 메소드의 시그니처만 정의 되어 있고
이 메소드의 구체적인 구현은 하위 클래스에서 오버라이딩 해야 한다는 의미다.
이렇게 내용이 비어있는 메소드를 추상 메소드라고 부른다.
추상 메소드를 하나라도 포함하고 있는 클래스는 추상 클래스가 되고, 자연스럽게 클래스의 이름 앞에 abstract가 붙는다.
※ 참고사항
- 본체가 있는 메소드는 abstract 키워드를 가질 수 없다.
public abstract int c(){System.out.println("Hello")} - 추상 클래스에는 추상메소드가 아닌 메소드가 존재 할 수 있다.
- 추상 클래스 A를 인스턴트화 하면 오류가 발생한다.
→ 3. 해결방법 :
클래스 A를 상속한 하위 클래스를 만들고 추상 메소드를 오버라이드해서 내용있는 메소드를 만들어야 한다.
클래스 B는 클래스 A를 상속했다 그리고 클래스 A의 추상 메소드인 메소드 b를 오버라이딩하고 있다.
□ final
■ final 필드
상기 코드에서 주석처리된 PI값을 변경하려는 코드는 오류가 발생한다.
이유는 상위 클래스에서 PI값을 final로 할당했기 때문이다.
■ final 메소드
■ final 클래스
□ interface
어떤 객체가 있고 그 객체가 특정한 인터페이스를 사용한다면 그 객체는 반드시 인터페이스의 메소드들을 구현해야 한다.
만약 인터페이스에서 강제하고 있는 메소드를 구현하지 않으면 이 에플리케이션은 컴파일 조차 되지 않는다.
■ 하나의 클래스가 여러개의 인터페이스를 구현 할 수 있다.
■ 인터페이스도 상속이 된다.
■ 인터페이스의 맴버는 반드시 public이다.
출처 : 생활코딩 유튜브 :
https://www.youtube.com/watch?v=Yv5Uw_vS3Uo&list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck&index=112
'Java & Spring > Java' 카테고리의 다른 글
생활코딩 - Java(예외 Exception) (0) | 2024.04.15 |
---|---|
생활코딩 - Java(다형성) (0) | 2024.04.04 |
생활코딩 - Java(접근 제어자) (0) | 2024.04.02 |
생활코딩 - Java(유효범위) (0) | 2024.03.26 |
생활코딩 - Java(객체지향프로그래밍) (0) | 2024.03.25 |