반응형
자바(Java)는 강력하면서도 유연한 프로그래밍 언어로, 객체 지향 프로그래밍 패러다임을 기반으로 합니다. 이번 글에서는 자바의 기본적인 5대 핵심 개념에 대해 알아보고, 각 개념을 예시를 통해 살펴보겠습니다.
클래스와 객체 (Class and Object)
자바에서 모든 것은 클래스와 객체로 이루어져 있습니다. 클래스는 객체를 정의하는 틀이며, 객체는 그 클래스의 인스턴스입니다.
// 클래스 정의
class Car {
String brand;
int year;
// 생성자
public Car(String brand, int year) {
this.brand = brand;
this.year = year;
}
// 메서드
public void startEngine() {
System.out.println("Engine started!");
}
}
// 객체 생성
Car myCar = new Car("Toyota", 2022);
myCar.startEngine();
상속 (Inheritance)
상속은 기존 클래스에서 일부 속성이나 메서드를 물려받아 새로운 클래스를 생성하는 개념입니다.
// 부모 클래스
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
// 자식 클래스
class Dog extends Animal {
void bark() {
System.out.println("Dog barks");
}
}
// 객체 생성
Dog myDog = new Dog();
myDog.sound();
myDog.bark();
다형성 (Polymorphism)
다형성은 같은 이름의 메서드가 다른 기능을 하는 것을 의미하며, 오버로딩과 오버라이딩을 통해 구현됩니다.
// 다형성 예시
class Shape {
void draw() {
System.out.println("Drawing a shape");
}
}
class Circle extends Shape {
void draw() {
System.out.println("Drawing a circle");
}
}
class Square extends Shape {
void draw() {
System.out.println("Drawing a square");
}
}
// 다형성 활용
Shape myShape = new Circle();
myShape.draw(); // 다형성에 의해 Circle 클래스의 draw()가 호출됨
캡슐화 (Encapsulation)
캡슐화는 데이터와 해당 데이터를 다루는 메서드를 하나로 묶어 클래스를 만드는 것을 의미합니다.
// 캡슐화 예시
class BankAccount {
private double balance;
// 입금 메서드
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("Deposit successful");
}
}
// 잔액 조회 메서드
public double getBalance() {
return balance;
}
}
// 객체 생성
BankAccount myAccount = new BankAccount();
myAccount.deposit(1000);
System.out.println("Balance: " + myAccount.getBalance());
인터페이스 (Interface)
인터페이스는 메서드의 선언만을 갖는 추상화된 형태로, 클래스에서 해당 인터페이스를 구현하여 사용합니다.
// 인터페이스 정의
interface Shape {
void draw();
}
// 인터페이스 구현
class Circle implements Shape {
public void draw() {
System.out.println("Drawing a circle");
}
}
// 객체 생성
Shape myShape = new Circle();
myShape.draw();
자바의 이 다섯 가지 핵심 개념을 이해하면 객체 지향 프로그래밍의 기초를 마련할 수 있습니다. 클래스와 객체, 상속, 다형성, 캡슐화, 그리고 인터페이스는 자바 프로그래머가 강력하고 효율적인 소프트웨어를 개발하는 데 필수적인 요소입니다.
반응형
'언어 공부 > JAVA' 카테고리의 다른 글
JAVA/innerClass (0) | 2022.05.17 |
---|---|
JAVA/DTO test code (0) | 2022.05.15 |
JAVA/상속관계, 포함관계 (0) | 2022.05.15 |
JAVA/CLASS (0) | 2022.05.11 |
JAVA/생성자 (0) | 2022.05.11 |
최근댓글