클래스 (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 메서드 자체에 파라미터 값이 없기에 공란으로 두어 사용해도 된다.
'JAVA' 카테고리의 다른 글
[JAVA] 객체지향 - 메서드 오버로딩 (0) | 2023.02.28 |
---|---|
[JAVA] 객체지향 - 생성자 (0) | 2023.02.28 |
[JAVA] 객체지향 - 객체를 멤버로 갖는 클래스 (포함 관계) (0) | 2023.02.26 |
[JAVA] 객체지향 - 객체를 담는 배열 (0) | 2023.02.26 |
[JAVA] 객체지향 - VO, DAO, DTO (0) | 2023.02.26 |