코딩딩/Java

객체 지향 프로그래밍

전낙타 2023. 8. 14. 17:40

클래스

 

클래스의 구성요소

 

객체

객체란 물리적으로 존재하나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별이 가능한 것을 말한다. 예를들어 물리적으로 존재하는 자동차, 자전거, 책, 사람과 추상적인 학과, 강의, 주문 등이 모두 객체가 될 수 있다. 객체는 속성과 동작으로 구성되어 있다. 자동차는 색깔, 모델명 등의 속성과 달린다, 멈춘다 등의 동작이 있다. 자바는 이 속성과 동작을 각각 필드와 메소드라고 부른다.

필드 (멤버 변수)

클래스 내부에 선언되는 데이터의 저장 공간으로, 객체의 상태를 나타내는 속성을 의미합니다. 필드는 클래스의 특성이나 속성을 나타내는 변수들로, 객체마다 고유한 값을 가질 수 있다. 필드는 클래스 내에서 선언되고, 객체가 생성될 때마다 해당 객체에 대한 데이터를 저장하는 역할을 한다. 예를 들어, 자동차 클래스에서 '속도', '색상', '차량 번호' 등이 필드에 해당한다.

메소드

클래스가 가지는 기능을 정의하는 함수로, 객체의 동작을 나타내는 부분이다. 메소드는 클래스 내부에 정의되며, 해당 클래스의 객체에서 호출될 수 있다. 메소드를 통해 객체의 필드 값을 조작하거나 특정 작업을 수행할 수 있다. 예를 들어, 자동차 클래스에서 '가속', '제동', '운전자 정보 출력' 등이 메소드에 해당한다.

생성자

객체가 생성될 때 호출되는 특별한 메소드로, 객체의 초기화를 담당합니다. 생성자는 클래스 이름과 동일한 이름을 가지며, 객체가 생성될 때 자동으로 호출되어 필요한 초기 설정을 수행한다. 생성자를 통해 필드의 초기값을 설정하거나 객체 생성 시 필요한 작업을 수행할 수 있다. 생성자는 여러 개 정의할 수 있으며, 매개변수를 통해 다양한 초기화 방식을 지원한다.

 

 

OOP 특성

 

캡슐화

캡슐화는 객체의 속성(데이터)과 메서드(기능)를 하나로 묶고, 이를 외부에서 접근할 수 있는 인터페이스를 제한하는 개념이다. 즉, 객체 내부의 상세한 동작 방식은 감추고 필요한 기능만 외부에 노출시켜 프로그램의 모듈성과 유지보수성을 높이는 역할을 한다. 이를 통해 객체 간의 의존성을 줄이고, 코드의 변경이 다른 부분에 미치는 영향을 최소화할 수 있다.

상속성

상속성은 이미 존재하는 클래스(부모 클래스 또는 기본 클래스)의 특성을 다른 클래스가 물려받아 확장하거나 수정하여 새로운 클래스(자식 클래스 또는 파생 클래스)를 만드는 개념이다. 이를 통해 중복 코드를 최소화하고 코드 재사용성을 높일 수 있다. 부모 클래스의 속성과 메서드를 자식 클래스가 공유하며, 필요한 경우에 자식 클래스에서 재정의(오버라이딩)하여 자신의 독특한 동작을 구현할 수 있다.

다형성

다형성은 여러 개체가 동일한 인터페이스를 사용하면서 다양한 구체적인 동작을 할 수 있는 능력을 말한다. 동일한 메서드를 호출하더라도 객체의 타입에 따라 다르게 동작하도록 설계되는 것을 의한다. 다형성을 통해 코드는 보다 유연하고 확장 가능한 구조를 갖게 되며, 추상화된 인터페이스를 통해 객체의 다양한 변형을 다룰 수 있다. 이를 위해 인터페이스, 추상 클래스, 오버로딩, 오버라이딩 등의 개념을 사용할 수 있다.