JAVA

[JAVA] 객체지향 - 클래스 (class)

해니01_15 2023. 2. 28. 17:50

클래스 (class) :  

객체를 정의하는 틀 또는 설계도.

→ 설계도인 클래스를 가지고, 객체를 생성하여 사용하게 된다. 

 

클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성.

 

필드(field) : 클래스에 포함된 변수(variable)들을 정의 한 곳 

메소드(method) : 어떠한 특정 작업을 수행하기 위한 명령문의 집합. 

 

 

1) 단순한 클래스 생성 

//보통 클래스는 메인 클래스 밖에 작성한다.

class person { //타입명 : person  
	int age;
	String name; // 나이와 이름을 담을 수 있다. 
} 

public class 클래스생성 { //Public 클래스 이름이 자바 파일의 이름과 동일해야한다 

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		person p1 = new person();
		p1.age = 10;
		p1.name = " aaa";
		
		System.out.println("p1.age"+p1.age);
		System.out.println("p1.name"+p1.name);

		person p2 = new person();
		p2.age = 11;
		p2.name =" bbb";
		
		System.out.println("p2.age"+p2.age);
		System.out.println("p2.name"+p2.name);
		
		person p3 = p2; 
		System.out.println("p3.age"+p3.age);
		System.out.println("p3.name"+p3.name);
		
	}
}

새롭게 정의 하고자 하는 class는 mian class 밖에 만든다. class person 은 이제 person 이라는 타입을 가진 객체가 된다. 

class 안에는 다양한 변수들이 한번에 정의 될 수 있다. 

 

main class 를 생성 할 때는 class 타입명 + 변수  = new 타입명(); 로 정의 한다. 즉, person p1 = new person 이 되는 것이다. 나는 처음에 이게 좀 헷갈렸는데 int a = 4 하는 것과 같다고 생각하면 된다. 결국 int 는 person이 되는거고 a = p1인 것이다. new는 heap 에 메모리를 할당 해 주는 역할을 하는데, class 안에 현재 int (4B), String (4B) 가 있으니 총 8B 를 할당 받는다. p1에 할당받은 메모리의 주소를 연결하고 그 주소가 100번지라고 치면 stack 에는 100번지의 주소가 연결 되어 사용하게 된다. 

 

 

2) 클래스에 메소드 추가 

class card9 { 

//밑에 세개는 멤버변수 
	String name;
	String num;
	String pwd;

	// 멤버변수에 값을 할당 하는 메서드
	void setData(String na, String nu, String p) { // 파라미터는 지역변수이다. 
    // 멤버변수 = 지역변수 로 설정 
		name = na;
		num = nu;
		pwd = p;
	}

	void print() { // 얘는 왜 파라미터가 필요 없냐면 그냥 간단하게 멤버변수만 출력 할꺼니까
		System.out.println("card name : " + name);
		System.out.println("card num : " + num);
		System.out.println("card pwd : " + pwd);
	}
}

public class 클래스에매서드추가 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		card9 c1 = new card9();
		c1.setData("ㅎㅎ", "3958djskl223", "1234");
		c1.print();

		System.out.println();

		card9 c2 = new card9();
		c2.setData("헤니", "395fg2djskl223", "1284");
		c2.print();

	}
}

card9 클래스 안에 해당 클래스 멤버 변수에 값을 할당할 setData  메서드와 print 메서드를 추가 해 주었다. 

main class에서 card9 c1 = new card9(); 라고 객체화 시켜 생성을 해준다. 메서드를 불러와 사용하고 싶을때는 생성 된 객체 변수.메서드이름 (파라미터에 값이 있다면 써야 한다); 으로 불러와서 사용해준다. 

즉, c1.setData("ㅎㅎ", "3958djskl223", "1234"); 가 된다.  파라미터에 값이 있는 setData는 꼭 파라미터 값 역시 채워주어야 메서드가 완성이 된다. 반면, c1.print(); 는 print 메서드 자체에 파라미터 값이 없기에 공란으로 두어 사용해도 된다.