본문 바로가기
✨ Java/클래스 (Class)

자바(JAVA) - 클래스 (Class) - 1

by 환풍 2023. 2. 7.
728x90
반응형
Class란? 설계도라고 생각하면 쉽게 접근이 가능하다.
자동차를 만들기 위한 설계도로 클래스의 기본을 다져보고자 한다.

세부 단위로 살펴보자.

예를들어 통상적으로 소문자 car  -> 변수명 ,  car( ) -> 메소드명,  Car  -> 클래스명 으로사용된다.

클래스는 관례상 대문자로 시작하는 낙타 표기법을 사용한다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Car {
    // 차량명, 제조사, 가격
    String carname; // 멤버변수, 필드
    String brand;
    int price;
 
 
    // 시동을 켜는 기능
    public void powerOn(){    // main에서 안쓸꺼면 static 없어도됨.
        System.out.println("시동을 켭니다.");
    }
    // 차가 움직이는 기능
    public void moveCar(){
        System.out.println("차가 움직입니다.");
    }
    // 차가 멈추는 기능
    public void stopCar(){
        System.out.println("차가 멈춥니다.");
    }
}
cs

carname과 brand, price와 같이 클래스에 정의한 변수들을 멤버 변수 혹은 필드라 한다.

자동차의 정보와 기능에 대해 변수와 메소드를 Car라는 클래스에 입력 해주었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class CarTest {
    public static void main(String[] args) {
 
        //Car 클래스의 객체 선언.
        // 문법 : class명 객채명;
        Car car1;
        //선언한 객체 생성
        car1 = new Car();
        
        //객체의 선언 및 생성
        Car car2 = new Car();
        
        //car2 차량의 차량명을 출력
        //객체가 가진 변수 혹은 메소드 접근법
        //문법 : 객체명.변수명 or 객체명.메소드명
        System.out.println(car2.brand);
 
        //car2 차량의 금액을 1000원으로 변경하는 코드.
        car2.price = 1000;
        System.out.println(car2.price);
 
        car2.powerOn();
    }
}
 
cs

클래스에는 두 가지 용도가 있다.

  • 라이브러리(libray) 클래스 : 실행할 수 없으며 다른 클래스에서 이용하는 클래스
  • 실행 클래스 : main () 메소드를 가지고 있는 실행 가능한 클래스

따라서 Car 는 라이브러리 클래스이고, CarTest는 실행 클래스라고 부를 수 있다.

 

 

CarTest 클래스를 만들어 Car 클래스와 연동시켜줄 객체를 생성해주어야한다.

Car car1; 

car1 = new Car( ); 로 만들어 질 수 있지만, 밑에보이는 Car car2 = new Car( );로 한줄 요약이 가능하다.

그리고, 이렇게 new 로 만들어진 객체인스턴스라고 한다.
즉, 실제 메모리에 만들어진 실체객체 또는 인스턴스라고 부르는 것이다.

new 키워드를 통해 객체가 생성되고 나면 참조값을 반환한다.
즉, 앞서 선언한 변수인 Car car1과 Car car2에 생성된 객체의 참조값을 각각 보관한다.

 

car2의 정보를 출력해보고자 한다. 통상적으로 car2의 정보를 출력해주려면 System.out.println(car2); 를 사용한다.

하지만 car2는 Car클래스에서 받은 객체이다. 여러가지 정보가 포함되어 있다.

따라서 car2의 어떤 정보를 출력해주냐? 를 정확하게 지정해주어야한다.

car2의 브랜드명을 받기 위해선 car2.brand라고 사용해줄 수 있다.

그 아래의 코드도 이와 같은 방식으로 작동된다.

car2.powerOn( );은 ( )가 있으므로 메소드를 실행해주는 것이다.

클래스는 변수든 메소드든 모두 출력하지 않고, 원하는 것만 가져다가 출력해줄 수 있는 장점이 있다.

 

그렇다면 하나의 클래스를 생성해서 여러번 사용할 수 있을까?

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class CarTest2 {
    public static void main(String[] args) {
        // car1, car2라는 Car 클래스에 대한 객체 두개 생성.
 
        Car car1 = new Car();
        Car car2 = new Car();
 
        System.out.println(car2.price);
 
        car1.brand ="현대";
        System.out.println(car1.brand);
 
        car2.brand = "기아";
        System.out.println(car2.brand);
 
    }
}
cs

된다. 하지만 CarTest에서 car2.price 가격을 1000으로 변경하였지만, CarTest2 이번 클래스에서는 적용되지 않았다.

클래스의 값을 받아오기 때문에 main에서 값을 변경해준 후  또 다른 main에서 실행하면 다시 정의해주어야한다.


 

클래스에 대해 아주 기초적인 것들을 공부해보았다.

다음에는 setter( ) getter( ) 메소드, 그리고 생성자에 대해서 알아보려고 한다.

728x90
반응형

댓글