[1. 객체지향 프로그램]
객체 지향 프로그래밍(Object-Oriented Programming, OOP)이란?
- 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것
- 각각의 객체는 메시지를 주고 받고 데이터를 처리할 수 있음
객체 지향 프로그래밍의 장점
- 코드의 재사용성이 높아짐
- 프로그램을 유연하고 변경이 용이하게 해줌
- 소프트웨어 개발과 보수를 용이하게 함
- 보다 직관적인 코드 분석을 가능하게 함
- 코드의 중복을 제거함
[2. 객체지향 언어의 특징]
캡슐화 (Encapsulation)
- 모든 변수들과 메소드들을 클래스 단위로 모으는 것
- 객체 안에 데이터와 메소드를 숨기는 것
- 객체 속성과 메소드를 외부에 노출하지 않음 (정보 은닉)
- 외부의 잘못된 접근으로부터 필드와 메소드를 보호
- 의도치 않은 변화에서 데이터와 메소드의 안전을 유지
상속 (Inhertiance)
- 존재하는 클래스의 속성들과 메소드들을 공유하는 새로운 클래스를 만듦
- 존재하는 클래스의 확장 기능
- 부모 클래스의 객체 속성을 하위 클래스에 전달
- 코드의 중복을 줄여주고 기능 변경 및 유지보수에 장점
추상화 (Abstraction)
- 객체의 공통 속성이나 행위를 추출하는 객체 지향 설계의 한 부분
- 자바에서의 추상화는 공통된 Attribute나 Method를 추출하는 것
- 일반적으로 사물의 공통된 특징을 파악하는 행위
- 객체지향 설계의 한 부분
다형성 (Polymorphism)
- 공통된 부모의 추상화된 속성을 상속 받아 이를 구현하는 단계에서 자식 클래스의 객체 특징에 따라 구현
- 자식 클래스는 부모 클래스의 모든 속성을 물려받으나, 동일한 기능을 강요받지 않도록 자식 클래스 내에서의 메소드 재정의를 허락함
- 문맥에 따라 같은 단어라도 다르게 해석됨
- 정적 다형성(Overloading) : 동일한 이름을 가진 메소드에 전달하는 인자를 변경함으로써 다른 형태의 메소드로 구현이 가능한 오버로딩
- 동적 다형성(Overriding) : 서브클래스가 부모 클래스를 상속받아 기능을 확장하여 사용함
[3. 클래스와 객체]
클래스
- 객체의 설계도 역할, 객체를 정의해놓은 것
- 객체를 생성하는 데에 사용됨
객체
- 실제로 존재하는 것, 사물 또는 개념
객체와 인스턴스
- 클래스를 인스턴스화하여 객체를 만드는 것
- 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 표현
참고: 자바의 정석
'Lang > Java' 카테고리의 다른 글
[java] 예외처리 (0) | 2023.06.04 |
---|---|
[java] 추상화와 인터페이스 (0) | 2023.06.04 |
[Java] 2차원 리스트 List (0) | 2023.04.06 |
[Java] 1차원 리스트 List (0) | 2023.04.06 |
[Java] class 클래스 (0) | 2023.04.03 |