* 인스턴스 메서드
: 인스턴스변수와 관련된 작업을 하는, 즉 메서드의 작업을 수행하는데 인스턴스변수를 필요로 하는 메서드이다.
* 클래스 메서드
: 메서드 중 인스턴스와 관계없는(인스턴스변수나 인스턴스메서드를 사용하지 않는) 메서드를 클래스메서드(static 메서드)로 정의한다.
1. 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다.
2. 클래스변수(static변수)는 인스턴스를 생성하지 않아도 사용할 수 있다.
3. 클래스메서드(static메서드)는 인스턴스변수를 사용할 수 없다.
4. 메서드 내에서 인스턴스변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.
<예문>
package Exercise; class MyMath2{ long a, b; // 인스턴스변수 a, b만을 이용해서 작업하므로 매개변수가 필요없다. long add() { return a + b; } // a, b 는 인스턴스 변수 long subtract() { return a - b; } long multiply() { return a * b; } double divide() { return a / b; } // 인스턴스변수와 관계없이 매개변수만으로 작업이 가능하다. static long add(long a, long b) { return a + b; } // a, b 는 지역변수 static long subtract(long a, long b) { return a - b; } static long multiply(long a, long b) { return a * b; } static double divide(double a, double b) { return a / b; } } public class MyMathTest2 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // 클래스메서드 호출 System.out.println(MyMath2.add(200L, 100L)); System.out.println(MyMath2.subtract(200L, 100L)); System.out.println(MyMath2.multiply(200L, 100L)); System.out.println(MyMath2.divide(200.0, 100.0)); System.out.println("----------------------"); MyMath2 mm = new MyMath2(); mm.a = 200L; mm.b = 100L; // 인스턴스 메서드는 객체생성 후에만 호출이 가능함. System.out.println(mm.add()); System.out.println(mm.subtract()); System.out.println(mm.multiply()); System.out.println(mm.divide()); } }
'개발 관련 지식 > 자바(Java)' 카테고리의 다른 글
[자바] 오버라이딩(Overriding) (0) | 2014.07.02 |
---|---|
[자바] 변수의 초기화 (0) | 2014.07.02 |
[자바] 생성자(Constructor) (0) | 2014.06.30 |
[자바] 메서드 오버로딩(method overloading) (0) | 2014.06.24 |
[자바] 클래스멤버와 인스턴스멤버 간의 참조와 호출 (0) | 2014.06.24 |