본문 바로가기
Web

[Java] 클래스 제대로 알아보기

by DuncanKim 2022. 6. 27.
728x90

[Java] 클래스 제대로 알아보기

 

 

 

앞선 포스팅에서 클래스 변수와 인스턴스 변수만 이야기하고, 클래스에 대한 이야기는 하지 못했다.

그래서 다음 포스팅인 메모리 사용구조와 더불어서 클래스에 대해 알아보는 시간을 가지려고 한다.

 

 

클래스는 사용자가 자주 활용하는 변수, 메소드, 생성자 타입 등을 모두 보관해놓은 문서이다.

메인 클래스 하나로만 코딩을 하는 것은 절차 지향이고, 클래스를 여러 개 나누어서 모듈화시켜 놓은 것을 객체 지향 프로그래밍이라고 한다.

 

 

만약, ‘비빔밥 식사’라는 행위를 ‘프로그래밍’에 비유한다고 하면, 비벼놓은 비빔밥이 절차지향이고, 비빔밥들의 재료들만 깔끔하게 손봐놓은 것이 객체지향 방식의 취식 방법이라고 할 수 있겠다.

 

 

 

클래스는 아래와 같이 따로 존재한다.

 

++ : 보통 클래스는 다른 각각의 파일로 존재하면서 서로를 가리킨다. 그렇지만, 하나의 파일안에 여러 개의 클래스가 있을 수도 있다. 그럴 경우 메인 메소드가 들어있는 클래스는 public으로 선언해야 하며, 나머지 클래스는 public으로 선언할 수 없다.

실무에서는 객체지향의 정신에 따라 하나의 파일에는 하나의 클래스만 담는 것을 우선으로 한다고 한다.

 

class Car{
    // 명사
    private String carName;
    private int age;
    private int distanceDriven;

    public Car(String carName, int age, int distanceDriven) {
        this.carName = carName;
        this.age = age;
        this.distanceDriven = distanceDriven;
    }
}

위의 클래스는 ‘차’에 필요한 요소만 담아 놓은 것이다. 메인 메소드 즉 실행문이 없는 것을 알 수 있다.

이 클래스를 메인 메소드가 담겨있는 클래스에서 활용하는 것이다.

 

 

public class Ex {
    public static void main(String[] args) {

        Car benz = new Car("Sclass", 23, 140000);
        benz.decelerate();
        benz.accelerate();
        Car bmw = benz; // 여기에서 benz는 객체가 아니고 값이다. benz를 조종할 수 있는 리모컨처럼 됨.

        Car audi = new Car("Sclass", 23, 143300);
        bmw = audi;
        // 이렇게 될 경우, benz 객체는 힙에서 가비지 컬렉터에게 삭제 당한다.
        // 주기적으로 자바에서 힙 영역에서 필요없는 데이터를 삭제한다. (자동으로 해준다)

    }
}

메인 메소드에서 Car benz = new Car("Sclass", 23, 140000); 이런 식으로 객체를 만들어낼 수 있다.

 

그렇게 되면 Car ‘클래스’의 Object(객체)가 생성되고, Instance가 메모리 힙영역에 할당된다.

 

객체와 인스턴스는 혼용되어 사용되기도 하는데, 자세히 말하면

 

객체는 클래스로 구현한 대상을 의미하고,  인스턴스는 메모리에 할당된 데이터를 의미한다.

 

이렇게 만들어진 객체를 가지고 메인 메소드에서 함수를 불러오거나, 새로운 인자를 집어넣어서 함수의 리턴값을 변환시키기도 하면서 프로그램을 가지고 노는 것이다.

728x90

'Web' 카테고리의 다른 글

[Java] 인터페이스의 다형성  (0) 2022.06.28
[Java] 자바의 메모리 사용 구조  (0) 2022.06.27
[HTML/CSS] Flex 활용방법  (0) 2022.06.26
[HTML/CSS] SPA가 무엇인가?  (0) 2022.06.26
[HTML/CSS] 드롭다운 2차메뉴 만들기  (0) 2022.06.26

댓글