개발 문서/Java
객체지향 프로그래밍과 자바
copg
2023. 11. 11. 02:45
728x90
반응형
자바(Java)는 객체지향 프로그래밍(OOP) 언어로, 객체지향 프로그래밍의 원칙과 개념을 기반으로 설계되었습니다. 여기서 객체지향 프로그래밍에 대한 기본 개념과 자바에서의 구현에 대해 살펴보겠습니다.
객체지향 프로그래밍 (OOP) 개념:
클래스와 객체:
- 클래스(Class): 객체를 생성하기 위한 설계도 또는 틀. 데이터와 메서드로 구성됨.
- 객체(Object): 클래스를 기반으로 실제로 생성된 인스턴스. 각 객체는 고유한 상태를 가질 수 있고, 클래스에서 정의한 메서드를 호출할 수 있음.
캡슐화 (Encapsulation):
- 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶음.
- 정보 은닉을 통해 객체 내부의 상세한 구현을 숨기고 외부에서는 필요한 기능만 사용할 수 있도록 함.
상속 (Inheritance):
- 이미 존재하는 클래스의 특성(멤버 변수와 메서드)을 다른 클래스에서 재사용하는 개념.
- 코드의 재사용성을 높이고, 클래스 간의 계층 구조를 형성함.
다형성 (Polymorphism):
- 하나의 인터페이스나 클래스를 사용하는 다양한 방법.
- 오버로딩(Overloading)과 오버라이딩(Overriding)을 통해 구현됨.
자바에서의 객체지향 프로그래밍 구현:
클래스 정의:
- 자바에서 클래스는
class
키워드를 사용하여 정의됨.
public class Car { // 멤버 변수 String brand; int year; // 생성자 public Car(String brand, int year) { this.brand = brand; this.year = year; } // 메서드 public void start() { System.out.println("The car is starting."); } }
- 자바에서 클래스는
객체 생성:
new
키워드를 사용하여 클래스의 인스턴스를 생성함.
Car myCar = new Car("Toyota", 2022);
캡슐화:
- 멤버 변수는 보통
private
으로 선언하고, 접근자 메서드(getters, setters)를 통해 접근 및 수정함.
public class Car { private String brand; private int year; // Getter public String getBrand() { return brand; } // Setter public void setBrand(String brand) { this.brand = brand; } }
- 멤버 변수는 보통
상속:
extends
키워드를 사용하여 부모 클래스를 상속받음.
public class SportsCar extends Car { // 추가적인 멤버 변수 및 메서드 정의 가능 }
다형성:
- 오버로딩과 오버라이딩을 통해 다형성을 구현할 수 있음.
public class Animal { public void makeSound() { System.out.println("Some generic sound"); } } public class Dog extends Animal { @Override public void makeSound() { System.out.println("Woof!"); } } public class Cat extends Animal { @Override public void makeSound() { System.out.println("Meow!"); } }
자바의 객체지향 프로그래밍 특징은 코드의 재사용성, 유지보수성, 확장성을 높이는 데 기여합니다. 객체지향 프로그래밍의 개념을 이해하면 더 효율적이고 모듈화된 코드를 작성할 수 있습니다.