OOP
Object-Oriented Programming
객체 지향적인 프로그래밍. 즉, C언어같은 절차 지향적인 프로그래밍이 아닌 객체의 관점에서 프로그래밍을 하는 것
OOP 특징
1. 캡슐화 (encapsulation)
하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것
정보 은닉
객체에서의 정보를 private로해서 데이터를 보호해서 접근을 제한 하고, getter / setter 등의 메서드를 통해서만 간접적으로 접근 허용
2. 추상화 (abstraction)
목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념.
객체들은 실제 그 모습이지만, 클래스는 객체들이 어떤 특징들이 있어야 한다고 정의하는 추상화된 개념.
추상화는 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법
3. 다형성 (polymorphism)
형태가 같은데 다른 기능을 하는 것을 의미. (같은 동작이지만 다른 결과물이 나올떄 다형이라고 생각하면 됨)
Overriding & Overloading
오버라이딩 : 부모 클래스에서 상속받은 자식 클래스에서 부모클래스에서 만들어진 메서드를 자식 클래스에서 자신의 입맛대로 다시 재정의해서 사용하는 것을 의미.
오버로딩 : 같은 이름의 메서드를 사용하지만 메서드마다 다른 용도로 사용되며 그 결과물도 다르게 구현할 수 있게 만드는 개념
➡️ 오버로딩이 가능하려면 메서드끼리 이름은 같지만 매개변수의 갯수나 데이터 타입이 달라야함
➡️ 메서드 이름이 같아도 문법 에러 ❌
다형성 장점 : 같은 이름의 속성을 유지함으로서, 속성을 사용하기 위한 I/F을 유지하고, 메서드 이름을 낭비하지 않음.
4. 상속성, 재사용 (inheritance)
기존 상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념.
기존 클래스에 기능을 가져와 재사용 할 수 있으면서도 동시에 새롭게 만든 클래스에 새로운 기능을 추가할 수 있게 만들어 줌.
🟢인터페이스의 존재이유가 다중상속을 지원하기 위함.
상속이 필요한 이유 : 코드의 중복을 없애기 위함.
SOLID
Single-reponsibility Principle
Open-closed Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
출처 :
'Dev > JAVA' 카테고리의 다른 글
Marshal & Unmarshal (1) | 2021.09.28 |
---|---|
JAVA 8, 9, 10 (0) | 2021.09.28 |
lombok (0) | 2021.09.27 |
Heap & Stack (0) | 2021.09.24 |
extends / implements (inheritance) (0) | 2021.09.24 |