확실한 것들만 정리해보았다.
1. 추상 메서드는 반드시 자식 클래스에서 오버라이딩 해야한다.
2. 클래스에 추상 메서드를 만들려면 그 클래스는 반드시 추상 클래스여야 한다.
3. extends가 가능한 경우는 클래스 extends 클래스, 인터페이스 extends 인터페이스만 존재한다.
4. implements가 가능한 경우는 클래스 implements 인터페이스만 존재한다.
5. 인터페이스는 다중상속이 가능하다
6. 클래스는 다중상속이 안된다
7. implements로 상속받으면 무조건 상속받은 인터페이스의 메서드들을 전부 오버라이딩 해야한다. 왜냐하면 인터페이스의 메서드들은 전부 컴파일시에 자동으로 추상 메서드가 되기 때문이다. 하지만 추상 클래스는 추상 메서드뿐만 아니라 일반 메서드가 존재할 수 있기 때문에 반드시 오버라이딩을 해야하는 것은 아니다.
8. 추상 클래스는 직접 객체를 만들어서 사용할 수 없다. 반드시 상속받아 써야한다.
9. 인터페이스가 다중상속이 가능한 이유는 인터페이스 안의 모든 메서드는 추상 메서드이기 때문에 메서드명이 같더라도 애매한 상황이 존재하지 않는다. 반면에 추상 클래스는 반드시 추상 메서드일 필요는 없기 때문에 메서드명이 같으면 애매한 문제가 발생할 수 있다.
추상클래스 vs 인터페이스 차이
1. 추상클래스는 다중 상속 불가능하다. 인터페이스는 다중 상속 가능하다.
2. 추상클래스는 일반변수 + 일반메서드 + 추상메서드 형태 가능하다. 인터페이스는 상수 + 추상메서드 형태만 가능하다
3. 추상클래스는 메서드의 부분적인 구현(일반메서드) 가능하다. 인터페이스는 메서드 선언만 가능하다.
'자바' 카테고리의 다른 글
영속성이란? JDBC란? ORM이란? JPA란? (0) | 2022.06.04 |
---|---|
JVM이란? JVM 구조 및 작동원리 (0) | 2022.05.24 |
JPA 연관관계 (0) | 2022.02.20 |
JPA란 무엇인가? (0) | 2022.02.06 |
Spring이란? Spring Boot란? (0) | 2022.01.28 |