[OOP] 객체 지향과 클래스

Jiwon·2024년 1월 9일
0

OOP: 객체 지향 프로그래밍

Java는 객체 지향 프로그래밍(Object Oriented Programming)을 하는 언어이다.

객체 모델링을 통해서 객체끼리 상호작용을 하도록 한다.

객체 지향 프로그램의 특징은 4가지이다.

1. 상속 Inheritance

  • 부모(상위) 객체를 상속받아서 자식(하위) 객체를 만들 수 있다. 부모 객체가 가지고 있는 필드와 메소드를 자식 객체에서도 사용하거나 수정할 수 있다.
  • Why?
    • 중복 코딩을 할 필요가 없다.
    • 유지 보수 시간을 최소화할 수 있다.
  • How?
    • class 자식객체 extend 부모객체 { }

2. 은닉 Encapsulation

  • 은닉(캡슐화, Encapsulation)이란, 객체의 데이터(필드), 동작(메소드)를 하나의 객체로 담아서 실제 구현 내용을 외부에서 보지 못하도록 하는 것이다.
  • Why?
    • 외부에서 접근하여 객체가 손상되지 않도록 한다.
  • How?
    • 접근제한자를 사용한다.
      • private, (default), protected, public
      • 클래스, 필드와 메소드를 선언할 때 맨 앞에 붙힌다.

3. 추상 Abstration

  • 하나 이상의 추상 메소드를 포함하는 클래스를 가리켜 추상 클래스라고 한다. 상속받은 자식클래스가 메소드를 완성하도록 유도하는 클래스이다.
  • Why?
    • 필드와 메소드의 규격을 통일하기 위함이다.
    • 실체 클래스를 구현할 때 시간이 절약된다.
  • How?
    • public abstract class 클래스명 { }
    • [public | protected] abstract 리턴타입 메소드명( ); 내용은 적지 않는다.

4. 다양 Polymorphism

  • 다양(다형성, Polymorphism)이란 사용 방법은 동일하지만 결과 다르게 나오는 성질이다. 다형성을 구현하기 위해서 오버로딩(Overloading, 중복)과 오버라이딩(Overriding, 재정의)이 필요하다.
  • Why?
    • 유지보수가 쉽다.
    • 객체 재사용이 쉬워져서 개발자의 코드 재사용성이 높아진다.
    • 클래스간 의존성이 줄어들어서 확장성이 높고, 결합도가 낮아져서 안정성이 높아진다.
  • How?
    • 오버라이딩 필수! : 자식클래스에서 메소드를 재정의
    • 상속, 업캐스팅, 다운캐스팅으로도 구현할 수 있다.

클래스 Class

클래스 선언

  • 객체를 생성하기 위한 금형기술(설계도)을 구현하는 것이 클래스이다. 선언된 하나의 클래스로부터 여러 개의 인스턴스를 생성할 수 있다.
  • 클래스에는 필드(변수 데이터)와 메소드(함수)가 선언된다.

공개 클래스란?

공개 클래스(public class)는 패키지의 위치와 관계없이 사용할 수 있는 클래스이다.

클래스의 두 가지 용도

  • 라이브러리(library) 클래스
    • 실행할 수 없으며 다른 클래스에서 이용하는 클래스
  • 실행 클래스
    • main( )메소드를 가지고 있는 실행 가능한 클래스

객체를 생성할 때 초기값 설정을 해야할까?

  • 클래스의 필드가 선언되면 자동으로 초기화된다.
    • Why? 객체는 힙 영역에 저장되기 때문에, 스택영역은 Garbage값을
profile
작은 개발 기록

0개의 댓글