본문 바로가기

BackEnd/Java

[java] 클래스(class)를 이용한 메서드(method)

728x90
반응형

클래스 메서드, 인스턴스 메서드로 구분이 됩니다.

 

class cars{
    boolean powerOn( ) { }
    // 인스턴스 메서드
    static boolean wiperoOn( ) { }
    // 클래스 메서드
}

 

static이 붙어있으면 클래스 메서드, 아니면 인스턴스 메서드입니다.

 

클래스 메서드는 객체를 생성하지 않아도 호출 가능, 인스턴스 메서드는 객체를 생성해야만 호출이 가능합니다.

 

package JAVA1213;

class Area{
    static void manual( ) { // static이 있으므로 클래스 메서드
    System.out.println("현재 사용 가능한 함수 목록");
    System.out.println("triangle : 삼각형 넓이");
    System.out.println("rectangle : 사각형 넓이");
    System.out.println("입니다");
    }
    
    double triangle(int a, int b) { // 삼각형 넓이를 반환하는 메서드
    return (double)a*b/2;
    }
    
    int rectangle(int a, int b) { // 사각형 넓이 반환하는 메서드
    return a*b;
    }
}

public class Method02 {
    public static void main(String[] args) {
        Area.manual( ); // 클래스 메서드 접근 가능
        // Area.triangle(3,5); 에러발생
        // Area.rectangle(3,4);에러발생

         Area cal = new Area( );
         cal.manual( );
         System.out.println(cal.triangle(3,5));
         System.out.println(cal.rectangle(3,4));
    }
}
현재 사용 가능한 함수 목록
triangle : 삼각형의 넓이
rectangle : 사각형의 넓이
입니다
현재 사용 가능한 함수 목록
triangle : 삼각형의 넓이
rectangle : 사각형의 넓이
입니다
7.5
12

 

manual은 클래스 메서드이므로 호출이 가능하고 triangle, rectangle은 인스턴스 메서드이므로 참조변수를 통해서 호출이 가능합니다. 

 

 

클래스와 인스턴스의 호출

 

변수와 메서드를 멤버라고 부릅니다.

 

인스턴스 멤버의 클래스 멤버 사용 -> 가능
클래스 멤버의 인스턴스 멤버 사용 -> 에러
인스턴스 멤버의 인스턴스 멤버 사용 -> 가능
클래스 멤버의 클래스 멤버 사용 -> 가능

 

클래스 메서드로 인스턴스 멤버들을 참조하는 것은 오류가 발생합니다. 이유는 클래스 멤버가 존재하는 시점이 처음 클래스가 메모리에 올라갈 때인데 이 시점에 인스턴스 멤버는 존재하지 않기 때문입니다.

 

클래스와 인스턴스를 헷갈리지 않도록 조심해야겠네요!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형