[JSCODE] 모의면접으로 학습하는 자바 1주차 - 객체지향 (19~29)

동춘·2024년 10월 31일

[면접스터디] 자바

목록 보기
3/15

자바 객체지향 1주차

19. 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이

  • 오버로딩: 같은 클래스 내에서 메서드 이름은 같고 매개변수가 다른 메서드를 여러 개 정의하는 것.
  • 오버라이딩: 부모 클래스의 메서드를 자식 클래스에서 재정의하여 상황에 맞게 수정하는 것.

20. 다형성(Polymorphism)

  • 다형성 : 하나의 객체가 여러 형태를 가질 수 있는 특성으로, 상속과 인터페이스를 통해 구현합니다.
  • 다형성을 통해 하나의 메서드나 객체가 여러 역할을 수행하게 할 수 있으며, 코드의 재사용성과 확장성을 높여줍니다.

    다형성은 객체 간의 결합도를 낮추어 코드 변경 시 영향을 줄일 수 있고, 확장 가능한 코드를 작성하게 해줍니다. 부모 타입의 객체로 자식 타입을 참조할 수 있어 다양한 객체를 유연하게 처리할 수 있습니다.

21. 상속(Inheritance)

  • 한 클래스가 다른 클래스의 속성과 메서드를 물려받는 기능
  • 재사용성을 높이고 프로그램의 구조를 논리적으로 만듭니다.
  • 상속받는 클래스는 하위클래스(또는 서브클래스) 상속해준 클래스는 상위클래스(또는 슈퍼클래스)라고 부릅니다.

    상속은 부모 클래스의 속성과 메서드를 자식클래스가 물려받는 기능입니다.
    상속을 통해 코드의 재사용성을 높일 수 있습니다
    자바는 단일상속만을 지원하며 상속을 통해 다형성을 구현할 수 있습니다.

22. 상속의 단점

  • 상속을 받으면 자식 클래스가 부모 클래스의 변화에 영향을 크게 받습니다.
    이때 자식클래스에서 부모클래스의 속성과 메서드를 사용하기 위해선 내부 구현을 잘 알아야 합니다.

    상속은 강력한 재사용성을 제공하지만, 부모 클래스의 변경에 자식 클래스가 쉽게 영향을 받으므로 캡슐화를 약화시킬 수 있습니다.

23. 상속과 조합(Composition)의 차이

  • 상속은 기존 클래스의 속성과 기능을 물려받는 것이고, 조합은 기존 클래스의 기능을 상속하지 않고, 다른 클래스의 인스턴스를 자신의 필드로 포함해 필요한 기능을 활용하는 방식입니다. 이렇게 하면 클래스 간의 강한 결합이 약한 결합으로 바뀌며, 캡슐화도 더 잘 유지됩니다
  • 조합을 사용하면 객체가 외부에 노출되지 않고 내부에서만 사용되므로, 외부와의 결합이 약해집니다.

    조합은 상속보다 코드가 더 유연하고, 포함 관계를 통해 상속의 단점인 부모 클래스의 변경에 덜 영향을 받습니다. 조합은 필요한 기능을 재사용하면서 클래스 간 결합도를 낮추는 데 유리합니다.

24. instanceof 키워드

  • instanceof는 객체가 특정 클래스의 타입인지 여부를 확인할 때 사용합니다. 예를 들어, if (object instanceof MyClass)와 같이 사용하여 객체의 타입을 검사할 수 있습니다.
  • 만약 상위클래스의 경우에도 true를 리턴합니다.

25. instanceof 사용 시 문제점

  • instanceof는 객체의 타입에 의존하기 때문에 하위클래스를 직접 다형성을 저해하고 코드의 유연성을 떨어뜨릴 수 있습니다.
  • 코드 가독성 저하: instanceof를 남용하면 조건문이 늘어나고 코드가 복잡해질 수 있습니다. 다형성을 활용해 타입에 따른 처리를 우회하는 것이 더 바람직합니다.

26. interface란 무엇인가

  • 인터페이스는 클래스가 구현해야 하는 메서드의 집합을 정의한 것입니다. 인터페이스를 구현하는 클래스는 인터페이스의 모든 메서드를 반드시 재정의해야 하며, 이를 통해 클래스는 특정 행동을 보장하게 됩니다. 인터페이스는 다중 구현을 가능하게 하여 객체 간 관계를 느슨하게 합니다.

27. interface와 abstract class의 차이

  • 인터페이스: 모든 메서드가 추상 메서드이며, 다중 구현이 가능합니다. 기본적으로 메서드 구현은 없으나, Java 8 이후에는 default 메서드로 일부 구현이 가능합니다.
  • 추상 클래스: 추상 메서드와 일반 메서드 모두 가질 수 있습니다. 하나의 부모 클래스만 상속할 수 있습니다.
  • 차이점 요약: 인터페이스는 기능의 구현을 강제하며, 추상 클래스는 상속받는 클래스에서 공통으로 사용하는 기능을 구현할 수 있습니다.

28. interface와 abstract class 사용 시기

  • interface: 공통적인 기능을 정의하여 여러 클래스가 동일한 동작을 수행하게 하고 싶을 때 사용합니다. 다중 구현이 필요할 때 적합합니다.
  • abstract class: 상속을 통해 계층 구조를 만들고, 기본 구현을 제공하며, 공통된 기능을 재사용하고 싶을 때 사용합니다. 객체의 공통적인 속성을 묘사할 때 적합합니다.

29. final 키워드

  • 변수에 사용: 변수를 상수로 만들어 한 번 초기화한 이후 변경할 수 없게 합니다.
  • 메서드에 사용: 메서드를 final로 선언하면, 해당 메서드를 하위 클래스에서 오버라이딩할 수 없습니다.
  • 클래스에 사용: 클래스를 final로 선언하면 상속이 불가능하게 하여, 클래스 자체의 구현을 확정합니다.
profile
건강하개

0개의 댓글