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

 

[Java]오버로딩 & 오버라이딩(Overloading & Overriding)

오버로딩(Overloading) 오버로딩(Overloading)이라는 뜻은 사전적으로 '과적하다.'라는 뜻이다. C언어에서는 함수명이 고유하게 존재해야 한다. 즉 하나의 함수가 하나의 기능만을 구현해야 한다는 것

hyoje420.tistory.com


5. 캡슐화 : 정보 은닉

  • 캡슐화는 객체 지향 프로그래밍에서 데이터와 해당 데이터를 처리하는 메서드를 하나의 단위로 묶는 것을 의미합니다.
  • 캡슐화를 통해 데이터를 외부로부터 보호하고, 데이터에 접근하기 위한 메서드를 제공함으로써 데이터의 무결성을 유지할 수 있습니다.
  • 캡슐화는 객체의 내부 구현을 외부로부터 감추고, 객체 간의 상호작용을 메서드를 통해 이루어지게 함으로써 코드의 유연성과 재사용성을 높일 수 있습니다.
  • 캡슐화는 정보 은닉이라고도 불리며, 객체 지향 프로그래밍의 핵심 개념 중 하나입니다.
public 클래스, 패키지, 자식, 전체
protected 클래스, 패키지, 자식
없을때 클래스, 패키지
private 클래스
package