Java의 Class 기초

zihooy·2023년 5월 3일
0

Java Programming

목록 보기
4/21
post-thumbnail

Java의 기본 문법 중 Class와 그 종류에 대해 알아보자.

🏹 Java의 Class 기본 구성 요소

  1. 필드(변수, 객체)
  2. 생성자 : only for 필드 초기화
  3. 메소드(함수)
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
	}
}

🏹 Java의 객체와 생성자의 상관관계

객체 배열을 선언한다고해서 생성자가 호출되는 것은 아니다.
객체가 생성되어야 (=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와 동일 
	}
}

🏹 Java의 함수 - 인수가 될 수 있는 Class

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());
	}
}
profile
thisIsZihooLog

0개의 댓글