- 클래스는 객체의 설계도와 같으며, 객체 지향 언어의 핵심 요소이다.

 - 객체의 상태를 나타내는 필드(변수) + 객체의 행동을 정의하는 메소드(함수)로 구성

 

[ 클래스와 객체의 기본개념 ]

 1. 클래스

    - 객체를 생성하기 위한 템플릿 또는 설계도.

    - 클래스를 정의함으로 어떤 객체들이 가지게 될 상태(필드)와 행동(메소드)를 명시할 수 있다.

 2. 객체

    - 클래스에 정의된 내용대로 메모리에 생성된 실체.

    - 클래스의 인스턴스

    - 프로그램에서 사용되는 변수와 메소드의 집합.

 

[ 클래스의 주요 특징 ]

 1. 캡슐화

    - 객체의 필드, 메소드를 하나로 묶어 실제 구현 내용을 외부에 감추는 것.

    - 이를 통해, 객체의 상세 구현을 숨겨서 사용자가 필요한 기능만 이용할 수 있게 한다.

    - 캡슐화를 통하여 필드와 메소드를 보호하는 이유는 사용자의 잘못된 사용으로 객체가 손상되지 않게 하기 위함이다.

    - 캡슐화된 멤버를 노출/비노출 시킬것인지 결정하기 위해 접근제어자를 사용한다. 

2. 상속

    - 부모 객체의 필드와 메소드를 자식 객체에게 물려주는 것.

    - 자식 객체는 부모 객체를 확장하여 추가적인 필드와 메소드를 가질 수 있다.

    - 상속의 효과 : 반복되는 코드의 중복을 줄임, 유지보수 용이, 객체의 다형성 구현

3. 다형성

    - 같은 타입이지만 실행 결과가 다양한 객체를 대입할 수 있는 성질

    - 부모 타입에는 모든 자식 객체가 대입된다.

    - 인터페이스 타입에는 모든 구현 객체가 대입된다.

    - 효과 : 객체의 부품화


[ 클래스 생성 ]

 - 소스파일 당 하나의 클래스를 생성 것이 관례

 - 물론, 두 개 이상의 클래스를 생성하는것이 가능하지만 하나만 생성한다.

 - 소스 파일이름과 동일한 클래스만 public class로 생성이 가능하다.

// Filename : Example.java
public Example {
  String name;
  int age;
}

 - 클래스의 객체 생성은 new 연산자를 이용하여 아래와 같이 생성할 수 있다.

Example exam = new Example();

 - Example 클래스 객체를 생성하고 저장되는 exam 변수의 값은 객체의 주소를 저장하게되고, 변수를 객체를 참조하게 된다.

 

+ Recent posts