[Java] 클래스 ①

kiteB·2021년 12월 27일
0

Java

목록 보기
8/35
post-thumbnail

[ 객체 지향 프로그래밍 ]

객체 지향 프로그래밍(OOP: Object Oriented Programming)은 객체의 상태와 행동을 구체화하는 형태의 프로그래밍이다. 객체 지향 프로그래밍에서는 모든 데이터를 객체로 취급하며, 이러한 객체가 바로 프로그래밍의 중심이 된다.


1. 객체란?

객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말한다.

예를 들어

  • 물리적으로 존재하는 노트북, 책, 사과와
  • 추상적으로 존재하는 강의, 주문 등이 있다.

객체는 속성(status)동작(behavior)으로 구성되어 있다.

예를 들어 사람은

  • 이름, 나이 등의 속성과
  • 걷다, 말하다 등의 동작이 있다.

자바는 이러한 속성과 동작을 각각 필드(field)메소드(method)라고 부른다.


2. 객체의 상호작용

현실 세계에서 일어나는 모든 현상은 객체와 객체 간의 상호작용으로 이루어져 있다.
객체들 사이의 상호작용 수단은 메소드이다. 객체가 다른 객체의 기능을 이용하는 것이 바로 메소드 호출이다. 객체의 상호작용은 객체 간의 메소드 호출을 의미하며, 매개값과 리턴값을 통해서 데이터를 주고 받는다.


3. 객체 지향 프로그래밍의 특징

객체 지향 프로그래밍의 특징은 캡슐화, 상속, 다형성이다.

1) 캡슐화(Encapsulation)

하나의 객체에 대해 그 객체가 특정한 목적을 위해 변수나 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것을 말한다.

  • 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.
  • 정보 은닉이 바로 캡슐화를 하는 중요한 목적이다.
    • 외부의 잘못된 사용으로 인해 객체를 손상되지 않기 위해서이다.
  • 접근 제한자(Access Modifier)를 이용하여 객체의 필드와 메소드의 사용 범위를 제한한다.

2) 상속(Inheritance)

객체 지향의 꽃! 🌸
상속은 기존 상위 클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있도록 도와주는 것이다.

  • 상속을 통해 하위 객체를 쉽고 빠르게 설계할 수 있으며, 반복된 코드의 중복을 줄여준다.
  • 상위 객체의 수정으로 모든 하위 객체들의 수정 효과를 가져오므로 유지 보수 시간을 최소화한다.

3) 다형성(Polymorphism)

다형성은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다.
즉, 같은 형태이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질이 바로 다형성이다!

  • 자바는 다형성을 위해서 부모 클래스 또는 인터페이스의 타입 변환을 허용한다.
    • 부모 타입에는 모든 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다.
  • 다형성을 통해 코드의 재사용, 코드 길이가 감소되어 유지보수가 용이하다.

[ 객체와 클래스 ]

클래스(class)는 객체를 정의하는 틀 또는 설계도와 같다.
클래스에는 객체를 생성하기 위한 필드와 메소드가 정의되어 있다.

  • 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance)라고 한다.
  • 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다.
  • 하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있다.

[ 클래스 선언 ]

1. 클래스 이름 규칙

  • 클래스 이름은 대소문자를 구분한다.

2. 클래스 생성 과정

클래스이름.java로 소스 파일을 생성한다.
② 소스 파일 안에 다음과 같이 클래스를 선언해준다.

접근제어자 class 클래스이름 {
}

예제

public class Car {
}
  • 일반적으로 소스 파일당 하나의 클래스를 선언하지만, 두 개 이상의 클래스 선언도 가능하다.
public class Car{
}

class Tree {
}

[ 객체 생성과 클래스 변수 ]

클래스로부터 객체를 생성할 때는 new 연산자를 사용하면 된다.

1. 인스턴스 생성

new 클래스이름();
  • new는 클래스로부터 객체를 생성시키는 연산자이다.
  • new 연산자 뒤에는 생성자가 오는데, 생성자는 클래스이름() 형태를 가지고 있다.
  • new 연산자로 생성된 객체는 메모리 힙(heap) 영역에 생성된다.

예제

new Car();

2. 객체를 참조하기 위한 참조 변수 선언

클래스이름 객체참조변수이름;

예제

Car myCar;

3. 참조 변수 선언과 인스턴스 생성 동시에 하기

클래스이름 객체참조변수 이름 = new 클래스이름();

예제

Car myCar = new Car();
profile
🚧 https://coji.tistory.com/ 🏠

0개의 댓글