Java 인터뷰 - 요약

Java의 abstract 키워드에 대해 이야기하고 Abstract 관련 Java 인터뷰에서 질문할 수 있는 것은 무엇입니까?

Java의 추상 클래스에 대해 설명하시겠습니까?



때때로 우리는 클래스의 모든 메소드에 대한 구현을 제공할 수 없는 상황에 직면할 수 있습니다. 구현을 확장하는 클래스에 맡기고 싶습니다. 이 경우 클래스를 추상으로 선언합니다. 클래스를 추상화하기 위해 추상 키워드를 사용합니다. 하나 이상의 추상 메서드를 포함하는 모든 클래스는 추상으로 선언됩니다. 클래스를 추상 메서드를 포함하는 추상 클래스로 선언하지 않으면 컴파일 시간 오류가 발생합니다.

예를 들어; 차량 클래스를 선택하면 이륜차, 4륜차 등이 있을 수 있기 때문에 구현을 제공할 수 없습니다. 그 순간 차량 클래스를 추상화합니다. 차량의 모든 공통 기능은 차량 클래스에서 추상 메서드로 선언됩니다. 차량을 확장하는 모든 클래스는 메서드 구현을 제공합니다. 구현을 제공하는 것은 하위 클래스의 책임입니다. 추상 클래스의 중요한 기능은 다음과 같습니다.

1) 추상 클래스는 인스턴스화할 수 없습니다.
2) 추상 클래스에는 추상 메서드, 구체적인 메서드 또는 둘 다 포함됩니다.
3) 추상 클래스를 확장하는 모든 클래스는 추상 클래스의 모든 메서드를 재정의해야 합니다.
4) 추상 클래스는 0개 이상의 추상 메서드를 포함할 수 있습니다.

From this point, it is better to compare Abstract classes with Interfaces since the most common questions are related to comparison between them.


추상 클래스 대 인터페이스 🤼‍♂️


Interface support multiple inheritance
Abstract class does not support multiple inheritance

이는 다음과 같이 하나 이상의(따라서 다중 상속) 인터페이스로 인터페이스를 확장할 수 있음을 의미합니다.

interface Interface_A { }
interface Interface_B { }
interface Interface_C { }

interface MyInterface extends Interface_A, Interface_B, interface_C { }


추상 클래스를 확장해 봅시다.

class Class_A { }

abstract class MyAbstractClass extends Class_A { }


  • 빈 메서드는 인터페이스에서 정의할 수 있지만 빈 메서드와 채워진 메서드는 모두 추상 클래스에서 정의할 수 있습니다.
  • 추상 클래스를 사용하면 속도 면에서 이점이 있습니다.
  • 인터페이스에 새로운 메서드를 작성할 때 이 인터페이스에서 구현하는 모든 클래스에 이 메서드를 하나씩 채워야 하지만 추상 클래스에서는 상황이 달라 메서드를 정의하고 채워넣으면 모두 추상 클래스에서 파생된 클래스는 이 기능을 얻습니다.

  • ❗❗❗ 이 동작은 Java 8에서 변경되었습니다. 인터페이스의 "기본"메서드를 살펴보세요.
  • 인터페이스의 모든 개체는 "공용"이어야 하지만 추상 클래스에서는 모든 요소가 "공용"일 필요는 없습니다.
  • 인터페이스에 생성자 메서드가 포함되어 있지 않습니다. 추상 클래스는 생성자 메서드를 포함할 수 있습니다.
  • 인터페이스 메서드는 정적일 수 없습니다. 추상 클래스 비추상 메서드는 정적으로 정의할 수 있습니다.
  • 좋은 웹페이지 즐겨찾기