Published:
Updated:

기본 용어


클래스(class)

  • Java에서 객체를 생성하기 위한 일종의 설계도
    • 흔히 붕어빵(객체)를 만들기 위한 붕어빵 틀(클래스)이라고 비유함
  • 객체가 가지는 속성(필드)와 동작(메서드)으로 이루어져 있음
    • 이들은 생략될 수도 있고, 하나 이상 작성될 수도 있음
  • Java를 실행 시 클래스는 JVM 메모리의 클래스 영역(Class Area)에 로드됨
  • 객체들을 소프트웨어 내에서 구현하기 위해 만든 설계도가 클래스

객체(object)

  • 물리적으로 존재하거나 추상적으로 생각할 수 있는 것들 중
    • 자신의 속성을 가지고 있고, 다른 것과 비교하여 식별 가능한 것을 말함
  • 자신 고유의 속성을 가지는 물리적, 추상적인 모든 대상을 일컫는 것이 바로 객체

인스턴스(instance)

  • 클래스가 붕어빵 틀이라면, 그 틀을 통해 생석된 객체(붕어빵) 하나하나를 해당 클래스의 인스턴스라고 함
  • 클래스를 사용하여 힙 영역(Heap Area)에 새로운 인스턴스(객체)를 생성할 수 있음
    • 즉, 인스턴스란 현실의 객체를 소프트웨어 내에서 구현한 실체
  • 대체로 객체와 인스턴스는 혼용해서 표현


프로그래밍 구조

프로퍼티(property)

  • 프로퍼티를 알기 전에 자바빈을 먼저 알아야 함
    • 자바빈(JavaBean)이란, 일반적으로 자바로 작성된 클래스들을 말함
  • 객체지향 언어인 자바에서 객체는 고유한 속성(특징)을 가짐

    • 그 속성을 칭하는 단어를 프로퍼티(property)라고 함
    • 이 속성의 진짜 모습, 즉 ‘실체’를 담는 곳이 필드(field, 멤버변수)라고 함
  • 프로퍼티는 아래와 같은 명명 규칙을 갖고 있으며, 흔히 getter/setter를 묶어 프로퍼티라 부름
    • 프로퍼티 값을 구하는 메서드는 get으로 시작함
    • 프로퍼티 값을 변경하는 메서드는 set으로 시작함
    • get과 set 뒤에는 프로퍼티의 이름 첫 글자를 대문자로 바꿈
    • set 메서드는 1개의 파라미터를 갖음

메서드(method)

  • 자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메서드(method)를 가짐
  • 그 중에서 메서드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있음
  • 중복되는 코드의 반복적인 프로그래밍을 지양하기 위해 메서드를 사용함
  • 모듈화로 인해 코드의 가독성도 좋아짐
  • 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때도 손쉽게 유지보수가 가능함

캡슐화(encapsulation)

  • 캡슐화(encapsulation)란 연관된 목적을 가지는 변수와 메서드를 하나의 클래스로 묶어 외부에서 쉽게 접근하지 못하도록 은닉하는 것
  • 캡슐화는 중요한 데이터를 쉽게 바꾸지 못하도록 할 때 사용됨
  • 캡슐화를 하는 가장 큰 이유는 정보 은닉에 있음
    • 외부에서 내부의 정보에 접근하거나 변경할 수 없게 직접적인 접근을 막음
    • 객체가 제공하는 필드와 메서드를 통해서만 접근이 가능하도록 함
  • 접근을 제한함으로써 유지보수나 확장 시 오류의 범위를 최소화할 수 있음
  • 객체 내의 정보 손상과 오용을 방지하고 데이터가 변경되어도 다른 객체에 영향을 주지 않아 독립성이 좋음

  • 캡슐화는 아래와 같은 접근제어자를 통해 이루어짐
    • public: 접근 제한 없음
    • protected: 동일한 패키지 내에 존재하거나 파생 클래스에서만 접근 가능
    • default: 아무런 접근 제한자를 명시하지 않으면 default 값이 되며, 동일한 패키지 내에서만 접근 가능
    • private: 자기 자신의 클래스 내에서만 접근 가능

상속(inheritance)

  • 상속(inheritance)이란 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미
  • 상속은 캡슐화, 추상화와 더불어 객쳊 히야 프로그래밍을 구성하는 중요한 특징 중 하나임
  • 상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메서드를 물려받아, 새로운 클래스를 생성할 수 있음

    • 기존에 정의되어 있던 클래스를 부모 클래스(parent class), 상위 클래스(super class) 또는 기초 클래스(base class)라고 함
    • 상속을 통해 새롭게 작성되는 클래스를 자식 클래스(child class), 하위 클래스(sub class) 또는 파생 클래스(derived class)라고 함
  • 자바에서 클래스의 상속은 다음과 같은 장점들을 가짐
    • 기존에 작성된 클래스를 재활용할 수 있음
    • 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스를 작성해 놓으면, 자식 클래스에서는 해당 멤버를 작성하지 않아도 됨
    • 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련함

다형성(polymorphism)

  • 다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미

  • 자바에서는 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 함

    • 참조 변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수보다 같거나 적어야 참조 가능
  • 다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나임

  • 특정 타입의 참조 변수로는 당연히 같은 타입의 인스턴스를 참조할 수 있음

    • 참조 변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수와 같기 때문
  • 부모 클래스 타입의 참조 변수로도 자식 클래스의 타입을 인스턴스를 참조할 수 있음

    • 참조 변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수보다 적기 때문
  • 자신 클래스 타입의 참조 변수로는 부모 클래스 타입의 인스터스를 참조할 수 없음

    • 참조 변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수보다 많기 때문


Reference

Tags:

Categories:

Published:
Updated:

Leave a comment