Java/OOP
[OOP] C3. 자바와 객체지향
JoonYong
2024. 2. 5. 15:50
1. 클래스(개념), 객체(실체)
클래스는 분류에 대한 개념이지 실체가 아니다. 하지만 객체는 실체다.
클래스는 사람이고, 객체는 손흥민이다. 클래스는 펭귄이고, 객체는 뽀로로이다.
클래스와 객체를 구분하는 방법 중 하나는 나이를 물어보는 것이다.
● 사람의 나이는 몇 살인가? VS 손흥민의 나이는 몇 살인가?
● 펭귄의 나이는 몇 살인가? VS 뽀로로의 나이는 몇 살인가?
클래스를 실체가 아닌 개념으로써 받아들여야 자바 프로그래밍에서 혼동하지 않게 된다!!
2. 추상화 : 모델링
- 객체 지향의 추상화는 모델링을 의미합니다.
- 추상화는 구체적인 개념이나 객체를 분해하여 그 중에서 관심 있는 특성만을 가지고 재조합하는 과정을 말합니다.
- 구현하고자 하는 것을 하나의 클래스로 모델링, 추상화하게 되는데 여기서 클래스는 특정 객체를 통칭할 수 있는 집합적 개념(분류)이다.
- 클래스를 통해 생성된 객체에 대해 인스턴스라는 표현을 더 자주 사용한다.
- 추상화란 구체적인 것을 분해해서 관심영역(애플리케이션 경계)에 있는 특성만 가지고 재조합하는 것 = 모델링
3. 상속 : 재사용 + 확장
- 상속이라고 하는 개념은 상속받는다는 말로 이해하면 혼동하기 쉽다.
- 객체 지향의 상속은 상속이 아닌 재사용과 확장으로 이해해야 한다.
- 실제로 자바에서 상속의 키워드는 extends이다.
- 상속 관계에서는 부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)가 형성되며, 자식 클래스는 부모 클래스의 모든 멤버(필드와 메서드)를 상속받습니다.
- 자식 클래스는 상속받은 멤버를 사용하거나 추가적인 멤버를 정의할 수 있습니다
- 상속의 관계: 김연아 is a kind of 사람 -> 김연아는 사람 중 한 명이다. .
4. 다형성 : 사용편의성
- 다형성은 객체 지향 프로그래밍에서 동일한 이름의 메서드나 연산자가 다양한 형태로 동작하는 능력을 의미합니다.
- 다형성을 활용하면 동일한 이름의 메서드를 호출하는 코드가 다른 객체에 따라 다르게 동작할 수 있습니다.
- 이는 코드의 가독성과 유연성을 높이고, 코드의 재사용성을 향상시킵니다.
- 다형성은 상속과 인터페이스를 통해 구현될 수 있으며, 오버로딩, 오버라이딩, 인터페이스의 구현 등 다양한 형태로 나타낼 수 있습니다
@ 오버 로딩/라이딩
- 오버로딩(Overloading): 같은 이름과 다른 인자로 메서드를 여러 개 구현하는 것
- 오버라이딩(Overriding): 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을
https://hyoje420.tistory.com/14
5. 캡슐화 : 정보 은닉
- 캡슐화는 객체 지향 프로그래밍에서 데이터와 해당 데이터를 처리하는 메서드를 하나의 단위로 묶는 것을 의미합니다.
- 캡슐화를 통해 데이터를 외부로부터 보호하고, 데이터에 접근하기 위한 메서드를 제공함으로써 데이터의 무결성을 유지할 수 있습니다.
- 캡슐화는 객체의 내부 구현을 외부로부터 감추고, 객체 간의 상호작용을 메서드를 통해 이루어지게 함으로써 코드의 유연성과 재사용성을 높일 수 있습니다.
- 캡슐화는 정보 은닉이라고도 불리며, 객체 지향 프로그래밍의 핵심 개념 중 하나입니다.
public | 클래스, 패키지, 자식, 전체 |
protected | 클래스, 패키지, 자식 |
없을때 | 클래스, 패키지 |
private | 클래스 |
package |