본문 바로가기
[ Developer ]/Core Java

[Java] 객체 & 클래스 & FINAL

by 김현섭. 2016. 2. 22.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
객체
객체란 폴더와 같은 개념으로 관련 파일들을 집어 넣기 위해 사용되고 또한 같은 이름의 클래스를 사용하기 위해 사용된다. 폴더의 개념처럼 같은 클래스 이름은 같은 폴더 내에 존재하지 못하지만 다른 객체로 생성한다면 가능하다.
또한 보안적인 요소로써 다른 패키지에서 접근을 못하게 하기 위해서 사용된다. 같은 클래스는 사용 가능하나 다른 클래스라면 import가 필요하다.

메소드
C언어의 함수와 같은 의미로 중복되는 코드를 효율적으로 줄일 수 있다.
단축키를 생성하는 개념과 같이 특정한 이름의 메소드를 생성하여 그 안의 연산을 정의한다면 그 연산이 필요할 때마다 메소드를 불러서 사용하기만 하면 된다.

메소드 중에서는 반환값 return 값이 있는 것과 없는 것으로 나눠 지는데
선언시 public 변수타입 메소드이름 ( 파라미터, 파라미터, …)으로 선언 하면 변수 타입으로 반환되는 메소드를 생성하는 것이다.

클래스
클래스란 객체의 속성 (객체가 가지는 것)과 기능 (객체가 하는 일)을 정의해 놓은 것이다.
하나의 클래스를 정의해놓으면 재사용성이 높아진다.
객체는 클래스를 인스턴스화 시킨 것이고 하나의 클래스는 여러 개의 객체로 생성이 가능하다

클래스의 속성은 멤버 변수라 불리고 기능은 메소드라 불린다. 속성은 가지는 변수가 되며 메소드는 연산 식이다.

클래스를 실체화 시키려면 생성자 (new)를 사용하여야 하는데 main에서 클래스 이름으로 생성하는 것이다.
인스턴스 생성시 딱 한번만 호출되어 생성하는 것이 생성자이며 인스턴스의 초기화를 목적으로 한다.

클래스를 통해 만들어 진 것은 변수가 아니라 인스턴스(객체)라고 한다. 변수는 기본형 type으로 만들어 진 것을 의미한다.

클래스의 인스턴스 필드 ( 객체의 속성이나 기능)을 갖는 기억공간 외에 static으로 선언한다면 클래스 필드라 불린다

클래스 필드는 변수 타입 앞에 public static int petCount 처럼 선언 되는 것으로 객체마다 각 각 같은 기억 공간 외에 따로 기억 공간을 갖는다. 그래서 어느 객체나 접근이 가능하며 또한 인스턴스화 (실체화) 하지 않아도 다른 클래스에서 사용이 가능하다


메소드나 클래스 앞에 붙는 public은 어디에서든지 호출이 가능한 접근 제어 지시자이고 private는 동일한 클래스 내에서만 호출이되서 다른 클래스에서 사용하려면 일반적인 호출이 아닌 Getter / Setter를 사용해야 한다.


Getter / Setter를 사용하기 위해 선언된 클래스 Pet이다
private로 속성이 선언 되어 같은 클래스 이외는 접근이 불가능한 상태이다.
하지만 Getter와 Setter를 사용하면 속성에 대한 내용을 불러올 수 있고 또한 입력도 가능하다


위의 코드가 Pet이란 클래스로 객체를 생성하여 속성을 정의하는 코드이다.


이전에 온도 변환 프로그램을 짜봤는데 그것을 통해 메소드가 얼마나 코드 단축에 좋은지 학습해보려고 한다.


Convert란 클래스를 생성해서 변환에 이용되는 연산식을 메소드로 정의한 것이다.
이 메소드를 사용하여 본문에서 얼마나 간단해 지는지 볼 수 있다


코드를 보면 if문에서 변환 메뉴를 입력 시 변환에 이용되는 연산 코드가 간단해 진 것을 볼 수 있다.
이렇듯 메소드를 잘만 사용한다면 유용할 것이라 생각된다

또한 메소드 정의에 대해서 코드를 통해 학습해본다


main 함수에 선언 된 것으로 Computer란 클래스가 객체화가 되고 그 객체를 이용해서 사칙연산을 하는 걸 볼 수 있다

컴퓨터 클래스 코드는 다음과 같다


위의 4개 사칙연산 코드는 메소드가 return 값이 없는 경우를 나타낸 것이고 아래의 4개 코드는 메소드가 반환 값을 통해 메인 클래스로 보내지고 메인 클래스에서 출력을 할 수 있다.

파라미터를 동일하게 받는 것은 같으나 메소드를 통해 메소드에서 연산을 처리하거나 다시 메인 클래스로 뺄 수 있다는 것을 학습할 수 있었다.