주의
- 본 게시글은 Claude로 작성되었습니다. 잘못된 정보가 있을 수 있습니다.
개요
객체 지향 프로그래밍(OOP)은 JAVA의 핵심 패러다임입니다. OOP는 데이터와 그 데이터를 조작하는 메서드를 하나의 단위인 ‘객체’로 묶어 프로그래밍하는 방식입니다. JAVA에서 OOP의 주요 개념으로는 클래스, 객체, 상속, 다형성, 캡슐화, 추상화가 있습니다.
상세
1. 클래스와 객체
클래스는 객체를 만들기 위한 템플릿이며, 객체는 클래스의 인스턴스입니다.
public class Car {
String model;
int year;
public void start() {
System.out.println("The car is starting.");
}
}
Car myCar = new Car(); // 객체 생성2. 상속
상속은 기존 클래스의 특성을 새로운 클래스가 물려받는 것입니다.
public class ElectricCar extends Car {
int batteryCapacity;
public void charge() {
System.out.println("The electric car is charging.");
}
}3. 다형성
다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질입니다.
Car car1 = new Car();
Car car2 = new ElectricCar(); // 다형성
car1.start(); // "The car is starting."
car2.start(); // "The car is starting." (ElectricCar에서 오버라이드하지 않은 경우)4. 캡슐화
캡슐화는 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶는 것입니다. JAVA에서는 접근 제어자를 통해 구현합니다.
public class BankAccount {
private double balance; // private으로 캡슐화
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
}5. 추상화
추상화는 공통적인 특성을 추출하여 상위 개념으로 만드는 것입니다. JAVA에서는 추상 클래스와 인터페이스로 구현할 수 있습니다.
abstract class Shape {
abstract double getArea();
}
class Circle extends Shape {
double radius;
@Override
double getArea() {
return Math.PI * radius * radius;
}
}예상 면접 질문/답변
OOP의 주요 특징을 설명해주세요.
OOP의 주요 특징은 캡슐화, 상속, 다형성, 추상화입니다. 캡슐화는 데이터와 메서드를 하나의 단위로 묶는 것, 상속은 기존 클래스의 특성을 새 클래스가 물려받는 것, 다형성은 같은 타입이지만 다양한 객체를 사용할 수 있는 성질, 추상화는 공통 특성을 추출하여 상위 개념을 만드는 것입니다.
JAVA에서 다형성을 어떻게 구현할 수 있나요?
JAVA에서 다형성은 주로 상속과 인터페이스를 통해 구현됩니다. 예를 들어, 부모 클래스 타입의 변수로 자식 클래스의 객체를 참조하거나, 인터페이스 타입의 변수로 해당 인터페이스를 구현한 클래스의 객체를 참조하는 방식으로 구현할 수 있습니다.
추상 클래스와 인터페이스의 차이점은 무엇인가요?
추상 클래스는 일부 구현된 메서드와 추상 메서드를 가질 수 있으며, 단일 상속만 가능합니다. 반면 인터페이스는 모든 메서드가 추상 메서드(Java 8 이전)이며, 다중 구현이 가능합니다. 또한 추상 클래스는 생성자를 가질 수 있지만, 인터페이스는 가질 수 없습니다.
JAVA에서 캡슐화를 구현하는 방법은 무엇인가요?
JAVA에서 캡슐화는 주로 접근 제어자를 사용하여 구현합니다. 클래스의 멤버 변수를 private으로 선언하고, 이 변수에 접근하기 위한 public getter와 setter 메서드를 제공하는 것이 일반적인 방법입니다. 이를 통해 데이터를 보호하고 제어할 수 있습니다.
JAVA의 ‘final’ 키워드의 용도는 무엇인가요?
‘final’ 키워드는 세 가지 주요 용도가 있습니다. 변수에 사용하면 상수가 되어 값을 변경할 수 없게 됩니다. 메서드에 사용하면 오버라이딩을 막습니다. 클래스에 사용하면 상속을 막아 해당 클래스를 확장할 수 없게 됩니다.