본문 바로가기
java

[java] 자바 클래스와 객체

by chu_dw 2022. 8. 31.

자바 공부하면서 헷갈리는 부분 위주로 정리해보려한다.

정리가 조금 밀려서 공부했던 내용들 복습하는 느낌으로 해보겠다.

 

이전에 배웠던 c언어에는 없었던 새로운 개념인 클래스아 객체에 대해 먼저 정리하겠다.

 

(정리 거의 다 했다가 글이 날라가 버려서 간단하게만 정리하려한다.. 쩌피 나중에 나 보려고 쓰는거니까.. 두번 쓰면 더 기억에 잘 남겄지..)

 

 

● 자바 기본 타입

 

가장 먼저 자바의 기본적인 내용인 데이터 타입에 대해 알아보겠다.

c에서의 데이터 타입은 정수형 데이터는 int타입, 실수형 데이터는 double 타입 이런식이었다.

 

자바도 이러한 데이터 타입을 따르지만 크게 한가지의 타입 형태가 더 추가된다.

자바의 데이터 타입을 크게 두가지로 나누면 기본(프리미티브)타입과 레퍼런스 타입이있다.
기본 타입은 c언에서 사용한 것과 같은 int, double, boolean등 8가지가 있고 레퍼런스 타입에는 class, string, 인터페이스

3가지가 있다.

즉 오늘 설명할 class 는 레퍼런스 타입의 데이터 중 하나라는 것이다.

 

 

● 자바 메모리 구조

 

클래스에 대해 설명하기전 자바의 메모리 구조에 대해 간단히 알아야 나중에 이해가 쉬울거 같다는 생각이들어 메모리 구조도 간단하게 정리하고 넘어가겠다.

자바의 메모리는 크게 method 영역, stack영역, heap 영역으로 나눌 수 있다.

 

method영역은 jvm (java virture macine)이 실행되면 생기는 영역으로 class정보, static변수 정보등을 저자한다.

 

stack 영역은 지역변수와 매개변수 처럼 기본 타입의 정적인 데이터를 저장한다.

(지역변수가 레퍼런스 타입일 경우 데이터는 heap영역에 저장되고 stack영역에는 heap에 있는 데이터를 가르키는 주소값을 저장한다.)

 

heap영역은 생성된 객체나 배열 과 같은 동적인 데이터를 저장한다. 레퍼런스 타입이 heap영역을 이용한다.

 

 

● 자바 클래스와 객체 개념

 

클래스의 개념은 객체를 만들어 내기위한 틀이다.

가장 쉽게 이해된 예시는 붕어빵 예시이다.

붕어빵을 만들기위해 빵을 하나씩 반죽하였는데 그렇게 빵을 만들더라도 하나를 다시 만들려면 일일이 다시 반죽하고 모양을 잡아 주어야한다. 그래서 나오게 된것이 붕어빵 틀이다. 이 붕어빵틀의 역할이 클래스라 생각하면된다.

그리고 그 틀에서 만들어지는 완성된 붕어빵이 객체이다.

붕어빵안에 팥은 넣을수도 슈크림을 넣을수도 있는것 처럼 같은 클래스에서도 다른 객체가 만들어 질수 있다.

그리고 붕어빵에 눈을 만들어 주고 싶다하면 이전 틀을 가져와 틀에 눈을 추가 해주면된다.

이전 틀을 가져오는 것을 클래스 상속이라 하고 상속 받은 클래스는 상속 해준 클래스의 모든 기능을 똑같이 가지고 새로운 기능을 추가 할 수 있다.

 

 

● 자바 클래스와 구성

public class Circle{
    private int radius;
    private Stirng name;
    
    public Circle(){ }
    
    public double getArea() {
    	double areaVal;
        areaVal = 3.14 * radius * radius;
        return areaVal;
    }
}

위는 Circle 이라는 클래스를 선언하는 코드로 클래스는 변수(필드)와 메소드(함수)를 가진다.

그리고 클래스 이름과 같은 메소드를 생성자라한다. 

생성자는 클래스로 객체를 만들때 객체를 초기화는 용도로 사용한다.

 

public은 접근 지정자이다.

접근 지정자에는 public, protected, private, default 4가지가 있다.

 

private로 지정된 데이터는 해당 클래스 안에서만 사용가능하다.

위 코드에서 private로 선언된 두 변수는 Circle클래스 안에서만 사용가능하다. getArea메소드의 경우 Circle클래스 안에 있기 때문에 radius변수를 사용하였다.

 

public으로 지정된 데이터는 누구나 사용가능하다. 객체에서도 접근할 수 있다.

protected는 상속관계 까지는 사용가능하다. 즉 해당 클래스와 그 클래스를 상속받은 클래스에서까지 사용 가능하다.

default를 써주거나 아무거도 지정하지 않을경우에는 같은 패키지에서 사용가능 하다.

 

 

● 클래스를 사용하는 이유

 

여러 이유가 있지만 궁극적으로는 재사용성을 높여 생산성을 높이는것에 의미를 두고있다.

이미 만들어진 수 많은 클래스를 상속받아 필요한 부분만 추가하여 사용할 수 있기 떄문이다.

또한 캡슐화가 가능하다. 캡슐화란 접근 지정자로 외부의 접근을 적절하게 막아주는 것으로 이를 통해 데이터 보호가 가능하다.

 

(객체 생성 부터는 다음으로 넘어가서 정리하겠다)

'java' 카테고리의 다른 글

[java] 필요 개념 정리 hash map  (0) 2023.09.19
[자바] 메소드의 활용  (0) 2023.04.04
[자바] 객체배열  (0) 2023.03.27
[java] 객체와 생성자  (0) 2023.03.20
[java] 배열  (0) 2023.03.13