로그인 회원가입
모두인포
전체IT경제사회생활스포츠시사여행연애

자바 객체 지향 프로그래밍(Object-Oriented Programming, OOP)

lmkfox · 2025-07-09 · 조회 0
자바 객체 지향 프로그래밍(Object-Oriented Programming, OOP)
1. 객체(Object)와 클래스(Class) 클래스(Class) - 객체를 만들기 위한 설계도 - 속성(필드)과 동작(메소드)을 정의 객체(Object) - 클래스에 정의된 내용을 바탕으로 만들어진 실제 인스턴스 - 메모리에 생성되어 동작 public class Car { String color; void drive() { System.out.println("차가 달립니다"); } } // 객체 생성 Car myCar = new Car(); myCar.color = "빨강"; myCar.drive(); 2. 객체 지향의 4대 특성 1) 캡슐화 (Encapsulation) - 객체의 상태(필드)는 외부에서 직접 접근하지 못하도록 숨기고, 메소드를 통해 접근하게 함 - 정보 은닉과 유지보수성을 높임 public class BankAccount { private int balance; public void deposit(int amount) { if (amount > 0) balance += amount; } public int getBalance() { return balance; } } 2) 상속 (Inheritance) - 기존 클래스의 속성과 기능을 확장하여 새로운 클래스를 만드는 것 - 코드 재사용성과 계층 구조를 용이하게 함 public class Animal { void sound() { System.out.println("동물이 소리를 냅니다"); } } public class Dog extends Animal { void bark() { System.out.println("멍멍"); } } 3) 다형성 (Polymorphism) - 같은 타입의 참조 변수가 여러 형태의 객체를 가리킬 수 있음 - 메소드 오버라이딩과 업캐스팅을 통해 구현 public class Animal { void sound() { System.out.println("소리 낸다"); } } public class Cat extends Animal { void sound() { System.out.println("야옹"); } } Animal a = new Cat(); a.sound(); // "야옹" 4) 추상화 (Abstraction) - 필요한 정보만 공개하고, 불필요한 세부사항은 감춤 - 인터페이스 또는 추상 클래스를 통해 구현 abstract class Shape { abstract void draw(); } class Circle extends Shape { void draw() { System.out.println("원을 그립니다"); } } 3. 클래스의 구성 요소 구성 요소 설명 필드 (Field) 객체의 속성 (멤버 변수) 메소드 (Method) 객체의 동작을 정의 생성자 (Constructor) 객체가 생성될 때 초기화하는 특별한 메소드 접근제어자 public, private, protected, default 4. 생성자(Constructor) - 클래스 이름과 동일 - 객체가 생성될 때 자동 호출 - 반환 타입 없음 public class Person { String name; // 생성자 public Person(String name) { this.name = name; } } 5. this 키워드 - 자기 자신을 참조하는 키워드 - 지역변수와 필드 이름이 같을 때 주로 사용 public class Person { String name; public Person(String name) { this.name = name; // this.name은 필드, name은 매개변수 } } 6. 객체 간의 관계 - 집합 관계(has-a): 클래스 안에 다른 객체를 필드로 포함 - 상속 관계(is-a): A가 B를 상속받는 경우 A는 B의 일종 // 집합 관계 class Engine {} class Car { Engine engine = new Engine(); // Car has-a Engine } 7. 인터페이스와 다형성 인터페이스는 메소드의 선언만 존재하고 구현은 하지 않음 interface Animal { void sound(); } class Cat implements Animal { public void sound() { System.out.println("야옹"); } } 다형성을 활용하여 인터페이스 타입으로 다양한 구현 객체를 사용할 수 있음 Animal animal = new Cat(); animal.sound(); // 야옹 8. 객체 지향 설계의 장점 - 재사용성: 상속과 모듈화를 통해 코드 중복을 줄임 - 유지보수성: 모듈별 설계로 수정이 쉬움 - 확장성: 새로운 기능을 쉽게 추가 가능 - 현실 세계와의 유사성: 실제 객체와 유사한 구조로 설계 가능 9. 객체 지향 프로그래밍 요약 핵심 개념 설명 클래스 객체의 설계도 객체 클래스 기반 실체 캡슐화 데이터 은닉, getter/setter 사용 상속 코드 재사용, 계층적 구조 다형성 다양한 형태로 동작 가능 추상화 불필요한 정보 숨기고 필요한 기능만 노출

댓글

아직 댓글이 없습니다.

로그인 후 댓글을 남길 수 있습니다.