Java의 기본 문법 중 Class와 그 종류에 대해 알아보자.
class Tiger{
int num = 10;
Tiger(){ // 생성자 함수, 하나의 객체가 생성될 때 단 한번 호출된다.
System.out.println("생성자 콜");
num = 20; // 실행 2
}
void m1() {
System.out.println(num);
}
}
public class hello {
public static void main(String[] args) {
System.out.println(1);
Tiger t = new Tiger(); // 생성자 호출이 1번 일어남
System.out.println(2);
System.out.println(t.num); // 실행 1 -> 실행 2가 되어 20이 출력됨
t.m1(); // 20
}
}
객체 배열을 선언한다고해서 생성자가 호출되는 것은 아니다.
객체가 생성되어야 (=new를 통한 할당) 생성자가 호출된다.
class Tiger {
Tiger() {
System.out.println("생성자 콜");
}
}
public class hello {
public static void main(String[] args) {
Tiger tiger = new Tiger(); // 생성자가 1번째로 call
Tiger[] t1 = new Tiger[3]; // 배열이 만들어지는 것일 뿐 t1 객체는 아직 생성되지 않았다. -> 생성자가 0번 call
t1[0] = new Tiger(); // 생성자가 2번째로 call
t1[1] = new Tiger(); // 생성자가 3번째로 call
t1[2] = new Tiger(); // 생성자가 4번째로 call
// 위 처럼 해야 객체가 생성되는 것이다.
t1[0] = new Tiger();
// 기존 객체는 소멸되고 새로운 객체가 생성 된다.
// 생성자가 5번째로 call
Tiger t2 = new Tiger();
// 생성자가 6번째로 call
System.out.println(t2.hashCode());
System.out.println(t2);
// 참조(메모리 공유)
Tiger t3 = t2;
System.out.println(t3.hashCode()); // t2와 동일
}
}
Class는 인수가 되어, 함수로 전달될 수 있다.
함수의 모양꼴 4가지
1. return값이 없고, 인수가 없는 함수
2. return값이 없고, 인수가 있는 함수
3. return값이 있고, 인수가 없는 함수
4. return값이 있고, 인수가 있는 함수
class Tiger{
// 함수의 모양꼴 4가지
void f1() {
System.out.println(1);
}
void f2(int n, String s) {
System.out.println(2);
}
int f3() {
System.out.println(3);
return 10;
}
int f4(int n, String s) { //인수 전달 시 class 사용 가능
System.out.println(4);
return n;
}
void f5(Lion l) {
System.out.println(5);
}
Lion f6() {
return new Lion();
}
}
class Lion{}
public class hello {
public static void main(String[] args) {
Tiger t = new Tiger();
t.f1(); t.f2(0, null); t.f3(); t.f4(0, null);
t.f5(new Lion());
}
}