-
JAVA | 객체 지향 프로그래밍(OOP : Object Oriented Programming)programming/JAVA 2020. 5. 15. 00:27
객체 지향 프로그래밍(OOP : Object Oriented Programming)이란?
부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법을
객체 지향 프로그래밍(OOP : Object Oriented Programming) 이라고 한다.
객체
- 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것
- 속성과 동작으로 구성되어 있으며 자바는 각각 필드와 메소드라고 부른다.
- 객체들 사이의 상호작용 수단은 메소드이며 객체가 다른 객체의 기능을 이용하는 것이 메소드 호출이다.
객체 간의 관계
- 집합 관계 - 하나의 객체는 부품이과 하나는 완성품에 해당하는 관계
- 사용 관계 - 객체 간의 상호작용을 말한다. 객체는 다른 객체의 메소드를 호출하여 원하는 결과를 얻어낸다.
- 상속 관계 - 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말한다.
일반적으로 상위 객체는 종류를 의미하고, 하위 객체는 구체적인 사물에 해당한다.
ex) 자동차(하위)는 기계(상위)의 종류이다.
객체 지향 프로그래밍(OOP : Object Oriented Programming)의 특징
- 캡슐화
객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것을 말한다.
즉 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.
객체의 데이터를 외부에서 직접 접근하지 못하게 막고 함수를 통해서만 조작이 가능하게 하는 작업 (정보 은닉) - 상속
상속 관계에 있는 두 클래스에 대해, 부모(상위) 객체가 자식(하위) 객체에게 속성을 물려주는 것이다.
상위 객체를 재사용해서 하위 객체를 쉽고 빠르게 설계할 수 있도록 도와준다. (코드의 재사용)
반복된 코드의 중복을 줄여주고, 개발 시간 절약, 유지 보수 시간 최소화 - 다형성
같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질
오버라이딩(Overriding), 오버로딩(Overloading)이란 형태로 제공된다.
* 오버라이딩(Overriding)
상위 클래스(부모 클래스)가 가지고 있는 메소드를 하위 클래스(자식 클래스)에서 재정의하여 사용하는 것
메소드의 이름은 같으며 매개 변수 타입과 매개변수가 같다.
자식 클래스에서 부모 클래스의 메소드를 오버라이딩 하게 되면, 부모 클래스의 메소드는 숨겨지고 오버라이딩 된 자식 메소드만 사용된다. 그러나 자식 클래스 내부에서 오버라이딩된 부모 클래스의 메소드를 호출해야 하는 상황이 발생한다면 명시적으로 super 를 붙여서 부모 메소드를 호출할 수 있다. super는 부모 객체를 참조하고 있기 때문에 부모 메소드에 직접 접근할 수 있다.
ex) super.부모메소드();
* 오버로딩(Overloading)
같은 이름의 메소드를 여러 개 가지면서 매개 변수를 다르게 정의하는 것
ex) 생성자 오버로딩
Car(){}
Car(String model){ this.model = model; }
Car(String model, String color){this.model = model; this.color = color;}
참고자료 - 이것이 자바다
'programming > JAVA' 카테고리의 다른 글
JAVA | 상속(Inheritance) (0) 2020.05.21 JAVA | 접근 제한자 (public, protected, default, private) (0) 2020.05.21 JAVA | 싱글톤 패턴 (Singleton Pattern) (0) 2020.05.20 JAVA | 클래스 구성(필드, 생성자, 메소드) (0) 2020.05.16 JAVA | JAVA란? (0) 2020.05.13