본문 바로가기

Java

생성자를 호출해 클래스 상호작용

. (쩜) 연산자 활용해 클래스 간 상호작용을 연습했다.

 

B클래스로 연결되는 A클래스 설계

package com.dot;
// A 클래스 설계 측
public class A {

    B b;

    // 생성자  - 인스턴스화할때 수행하는 코드
    public A() {
        System.out.println("1단계 A 생성자 호출");
        b = new B(); // B 객체 생성
    }
    public void callA() {
        System.out.println("1단계 callA() 메서드 호출");
        System.out.println("===== ===== ===== ===== =====");
    }
}//end of class

 

C클래스로 연결되는 B클래스 설계

package com.dot;
// B 클래스 설계 측
public class B {

    C c;

    // 생성자
    public B() {
        System.out.println("2단계 B 생성자 호출");
        c = new C(); // C 객체 생성
    }
    public void callB() {
        System.out.println("2단계 callB() 메서드 호출");
        System.out.println("===== ===== ===== ===== =====");
    }
}//end of class

 

최종 결과값이 들어있는 C클래스 설계

package com.dot;
// C 클래스 설계 측
public class C {

    //기본 생성자 호출 됨 => Heap 메모리에 C 객체가 올라갔다.
    public void callFinal() {
        System.out.println("3단계 callFinal() 메서드 호출");
        System.out.println("===== ===== ===== ===== =====");
    }
    public void callC() {
        System.out.println("3단계 callC() 메서드 호출");
        System.out.println("===== ===== ===== ===== =====");
    }
}// end of class

 

코드 실행문

package com.dot;
    // 코드 실행측
public class MainTest1 {
    // main
    public static void main(String[] args) {
        System.out.println(" . 연산자의 여행!!! ");

        A a1 = new A(); // A 생성자 호출
        B b1 = new B(); // B 생성자 호출
        C c1 = new C(); // C 생성자 호출

        a1.b.c.callFinal(); // 3단계 callFinal() 메서드 호출
        b1.c.callFinal(); // 3단계 callFinal() 메서드 호출
        c1.callFinal(); // 3단계 callFinal() 메서드 호출

        a1.b.c.callC(); // callC() 메서드 호출
        a1.b.callB(); // callB() 메서드 호출
        a1.callA(); // 1단계 callA() 메서드 호출

    }//end of main
}//end of class