본문으로 바로가기

class의 구성

category Java언어 2018. 7. 10. 19:12

클래스란

OOP(객체지향 프로그래밍)은 모든 사물이 하나하나 객체로 이루어져 있는 실세계와 같이 프로그램도 객체단위로 작성하자는 사고이다.

현실세계에서 건물이나 물품을 만들기 위해서는 설계도가 필요하다. 마찬가지로 프로그래밍에서 프로그램을 이루는 객체를 만들기 위해서는 설계도가 필요하다. 즉, class란 프로그램을 작성하기위한 객체의 설계도라고 할 수 있다.

 

클래스의 구성요소

C언어의 경우 컴파일러가 각각의 member를 인식하도록 정한 장소가 지정되어 있기때문에 member들의 위치가 잘못되면 error가 발생한다.

변수 선언 및 초기화가 함수의 가장 상단에서 이루어져야 하는 것 또한 이러한 이유이다.

반면 java class의 멤버들의 경우 위치가 제한되어 있지않다. 하지만 통상적으로 아래와 같은 위치에서 선언되어 진다.


class A{
 
    // field
    private int a;
 
    // constructor
    public A(){}
 
    // method
    public void setA(){}
 
    public int getA(){}
cs

 

 1.  field 

1) 해당 class가 가진 속성이다.

    실 세계의 자동차의 경우를 예로 들어보면 자동차는 바퀴, 백미러, 엔진 등으로 이루어져 있는데, 이러한 것들은 자동차의 속성이다.

2) 선언만 하고 초기화는 하지 않는다.

    class는 객체의 설계도이다. 설계도는 구조만을 정의해야 한다. 

    자동차 설계도로 우리는 아우디, BMW, 제네시스 등 다양한 종류의 자동차를 만들 수 있다.

    하지만 만약 자동차 설계도의 속성 중 로고 속성을 아우디로 정할 경우 아우디만 생산이 가능하게 될 것이다.

3) final일 경우는 초기화 해준다.

    해당 클래스를 이용해 생성한 모든 객체들이 공통으로 가질 데이터는 변하지 않기 때문에 속성 자체에서 초기화 해준다.(상수)

    자동차 설계도가 BMW 계열만을 생산하기 위한 설계도라면 로고라는 속성을 BMW로 설정해두는 편이 좋을 것이다.

4) private 접근 지정자 사용(캡슐화)

    OOP 특성상 내부구조를 외부에 노출시지키 않도록 권장한다.

    접근이 가능하도록  public 접근 지정자를 사용한다고 error가 발생하지는 않는다.

5) 종류

1) instance field

클래스를 이용해 객체(instance)를 생성 시 확보되는 메모리

2) static field

모든 객체가 공유하는 메모리 (메모리 절약, 공유)

3) final field

상수화되어 진 데이터를 담는 메모리

항상 static과 같이쓰인다.( 상수는 다같이 쓰고 같은 값이기 때문에 여러개 만들필요 x)

 

2. constructor 

1) 객체 생성시 자동 호출 되어지는 메소드이다. 

    메소드이기 때문에 당연히 overrodding이 가능하다.(다형성)

2) 직접 선언해 주지 않아도 default 생성자가 존재한다.

    생성자를 overrodding할 경우에는 default 생성자를 자동으로 생성해 주지 않는다.

3) return type이 존재하지 않는 메소드이다.

4) 메소드명이 class명과 동일한 메소드이다.

    class명과 동일한 이름을 가지기 때문에 여타 다른 메소드들과 달리 첫 글자가 대문자이다.

5) 주로 public 접근 지정자 사용한다.  (외부에서 접근하기 때문에)

    예외 - private로 설정 후 객체를 생성할 수 없도록 만든 후 메소드로 생성자를 호출하는 경우(singleton pattern)

6) 기본기능 : 객체등록(생성자 호출이 되어지면 등록)

7) 사용자 기능 : 객체 생성시 필드 초기화



3. method

1) field가 class의 속성이었다면 method는 class의 기능이다.

    자동차에서 바퀴와 백미러가 속성이었다면, '달린다', '창문을 연다'와 같은 기능이 method이다.

2) 외부와 내부를 연결시켜 주는 인터페이스 역할 또한 한다. (필드값을 사용할 수 있도록)

3) 주로 public 접근지정자 사용을 사용한다.

4) 종류

1)  instance method

객체 생성 후에 사용되어 지는 메소드

레퍼런스 변수명.메소드() 호출

2) static method

객체와 무관하게 사용될 수 있는 메소드

클래스명.메소드명() 호출


 3) final method

overridding이 불가능 하다.

 

 

 

'Java언어' 카테고리의 다른 글

Thread란?  (1) 2018.08.16
OOP 란?  (0) 2018.08.16
Wrapper클래스 활용  (0) 2018.07.10
Java에서 단일 문자열 입력  (0) 2018.07.10
next() vs nextLine()  (2) 2018.07.06