자바는 현대 소프트웨어 개발의 핵심 언어 중 하나로, 객체지향 프로그래밍(OOP)의 개념과 원칙을 중심으로 구축되었습니다. 이 글에서는 자바의 객체지향 프로그래밍에 대한 핵심 개념과 그것들을 실제로 활용하는 방법에 대해 자세히 살펴보겠습니다.
객체지향 프로그래밍의 개념
1. 클래스와 객체
- 클래스(Class): 클래스는 객체를 생성하기 위한 템플릿으로, 속성(멤버 변수)과 메서드(멤버 함수)를 정의합니다. 예를 들어, 'Person' 클래스는 사람의 속성과 행동을 정의할 수 있습니다.
- 객체(Object): 객체는 클래스를 기반으로 실제로 생성된 인스턴스를 말합니다. 'Person' 클래스를 기반으로 생성된 실제 사람 객체는 각각 다른 속성과 행동을 가질 수 있습니다.
2. 상속
- 상속(Inheritance): 상속은 기존 클래스에서 속성과 메서드를 물려받아 새로운 클래스를 정의하는 개념입니다. 이를 통해 코드 재사용과 확장이 가능해집니다.
3. 다형성
- 다형성(Polymorphism): 다형성은 하나의 인터페이스나 메서드가 다양한 형태로 동작할 수 있는 능력을 말합니다. 자바에서는 다형성을 인터페이스와 메서드 오버라이딩을 통해 구현합니다.
4. 캡슐화
- 캡슐화(Encapsulation): 캡슐화는 데이터와 그 데이터를 다루는 메서드를 하나의 단위로 묶는 개념입니다. 이를 통해 데이터의 접근을 제어하고 보안을 강화할 수 있습니다.
자바에서 객체지향 프로그래밍 활용
객체지향 프로그래밍 활용: 클래스 정의와 객체 생성
자바에서 클래스를 정의하고 객체를 생성하는 방법은 간단합니다. 다음은 'Person' 클래스를 정의하고 객체를 생성하는 예제입니다.
- 클래스 정의 : Person(사람) 클래스에 name(이름), age(나이) 속성 정의 / introduce(소개) 수행 메서드 정의
- 객체 생성 : Person(사람) 클래스를 기반으로 name(이름)은 '홍길동', age(나이)는 '30'인 객체 생성 / 해당 객체는 introduce(소개) 행동을 수행
class Person {
String name;
int age;
void introduce() {
System.out.println("이름: " + name);
System.out.println("나이: " + age);
}
}
public class Main {
public static void main(String[] args) {
Person person1 = new Person();
person1.name = "홍길동";
person1.age = 30;
person1.introduce();
}
}
객체지향 프로그래밍 활용: 상속
상속을 사용하면 기존 클래스의 속성과 메서드를 재사용하고 확장할 수 있습니다. 다음은 'Student' 클래스가 'Person' 클래스를 상속받는 예제입니다.
- 클래스 상속: Person(사람) 클래스를 상속받은 Student(학생) 클래스는 name, age, introduce() 등 부모 클래스에 정의된 속성과 메서드까지 호출하여 사용 가능
class Student extends Person {
String school;
void study() {
System.out.println(name + "은(는) " + school + "에서 공부합니다.");
}
}
객체지향 프로그래밍 활용: 다형성 구현
다형성을 이용하여 여러 클래스가 같은 인터페이스를 구현하도록 할 수 있습니다. 예를 들어, 'Shape' 인터페이스를 구현한 다양한 도형 클래스를 만들 수 있습니다.
- 다형성 구현: Shape를 인터페이스로 작성하여 calculateArea 메서드 내용을 정의하지 않고, Shape를 구현하는 Circle, Rectangle 두 클래스에서 calculateArea 메서드를 각각의 특성에 맞는 계산식으로 정의(Override)하여 사용
interface Shape {
double calculateArea();
}
class Circle implements Shape {
double radius;
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
}
class Rectangle implements Shape {
double width;
double height;
@Override
public double calculateArea() {
return width * height;
}
}
객체지향 프로그래밍 활용: 캡슐화
캡슐화를 통해 데이터를 보호하고 외부에서의 무단 접근을 막을 수 있습니다. 예를 들어, 'BankAccount' 클래스에서 잔액 정보를 캡슐화하여 구현할 수 있습니다.
- 캡슐화: BankAccount 클래스에서 balance(잔액 정보) 속성의 접근제한자를 private로 정의하여 BankAccount 클래스 내부에서만 해당 속성에 접근 가능
class BankAccount {
private double balance;
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
}
}
public double getBalance() {
return balance;
}
}
자바 클래스, 상속, 다형성 및 캡슐화와 같은 핵심 개념을 활용하여 코드를 구조화하고 유지 보수 가능한 소프트웨어를 개발할 수 있습니다.
클래스 제작, 객체 생성, 상속의 개념은 다음 글에서 더 자세하게 알아보겠습니다.
'# Coding > Java' 카테고리의 다른 글
| 자바 메서드 (0) | 2023.09.20 |
|---|---|
| 자바 클래스 제작, 객체 생성 (0) | 2023.09.19 |
| 자바 조건문 반복문 (0) | 2023.09.13 |
| 자바 배열, 배열과 메모리 (0) | 2023.09.12 |
| 자바 특수 문자, 서식 문자, 연산자 (1) | 2023.09.11 |