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
반응형
'BackEnd > Java' 카테고리의 다른 글
[java] 자바의 정석 ch3 연습문제 풀이 (0) | 2022.12.18 |
---|---|
[java] 자바의 정석 ch2 연습문제 풀이 (0) | 2022.12.18 |
[java] 자바의 클래스(class)란? (0) | 2022.12.13 |
[java] 22.12.12 심화 문제 풀이 (0) | 2022.12.13 |
[java] 메서드, 재귀메서드를 이용한 심화 문제 풀이 (0) | 2022.12.13 |