본문 바로가기
JAVA/Java

[Java] 자바 클래스(class)와 객체(object) 생성하여 사용하기

[1] 들어가며

 

자바는 객체지향프로그래밍 언어 입니다.

따라서 객체를 모르고서는 Java를 코딩한다는 것은 불가능하다고 볼 수 있습니다.

이렇게 중요한 객체는 먼저 Class를 만들고 이렇게 만들어진 클래스를 사용하고자 할때 객체로 만들어서 사용하는데요

이 포스팅에서는 클래스를 어떻게 만들고 또 객체는 어떻게 만들어서 사용하는지에 대해 알아보겠습니다.

 

 

 

 

 

[2] Class생성

 

아래의 코드는 mainClass.java파일에서 mainClass와 main2라는 이름으로 클래스를 생성한 모습입니다.

보시는 바와 같이 java파일 내에는 class를 한개가 아니라 여러개 생성할 수 있습니다. 다만 여기서 주의해야할 점은

 

- public class는 java파일당 한개만 선언이 가능합니다.

 

- public class는 java파일의 이름과 동일해야 합니다.

  예를들어 mainClass.java파일의 public class는 반드시 public class mainClass() 이어여 합니다.

 

- 같은 java파일 내의 class라도 다른 클래스의 private 변수나 메소드를 사용할 수 없습니다.

 

 

 

mainClass.java

 

package study;

public class mainClass {

	public static void main(String[] args) {
		
	}

}


class main2 {
	
}

 

 

 

 

 

 

 

[3] class의 객체 생성

 

어떤 클래스에서 다른 클래스를 사용하기 위해서는 사용하고자 하는 class의 객체를 생성해서 사용해야 합니다.

class의 객체는 원하는 이름으로 무한정 만들수가 있습니다.

마치 붕어빵틀만 있으면 원하는 만큼 붕어빵을 찍어낼 수 있는 것처럼 말이죠.

아래 코드를 통해서 mainClass에서 main2 클래스의 객체를 각각 test1, test2라는 이름으로 생성해 보겠습니다.

그리고 생성된 객체를 통해서 main2 클래스에 있는 num이라는 변수를 사용해 보겠습니다.

 

 

 

mainClass.java

 

package study;

public class mainClass {
	


	public static void main(String[] args) {
		
		main2 test1 = new main2();
		main2 test2 = new main2();
		
		System.out.println(test1.num);
		System.out.println(test2.num);
	}

}




class main2 {
	
	int num = 2;
}

 

 

 

위의 예제에서는 같은 java파일 내의 클래스들끼리 객체를 생성하여 사용하였는데

그렇다면 서로 다른 java파일에 있는 class들의 객체는 어떻게 생성할지 생각해 볼 필요가 있습니다.

사실 다른 java파일에 있는 class를 객체화하여 사용하는 것의 방법은 위와 100% 동일 합니다.

하지만 서로다른 java파일이 각각 다른 package에 속해져 있다면 이야기가 달라 조금 달라집니다.

서로 다른 패키지에 있는 class들을 객체화 하여 사용하기 위해서는 import를 해주셔야 하는데요 아래 예제를 통해서 확인해 보겠습니다.

 

 

 

study package의 mainClass.java

 

package study;

import aa.test;

public class mainClass {
	


	public static void main(String[] args) {

		test bb = new test();
	}

}

 

 

 

aa package의 test.java

 

package aa;

public class test {

}

 

 

 

위에서 보시는 바와 같이 서로 다른 package에 있는 class에서 객체화 하여 사용하기 위해서는

사용하고자 하는 Class에서 import aa.test; 를 해주어야 객체화가 가능했습니다.

 

 

 

 

 

 

댓글