클래스메서드(static 메서드) 와 인스턴스메서드
::::특별한 Java Story 2013. 6. 3. 17:50 |/*내용을 복사 한 후 이클립스에서
ctrl + shift + F를 눌러주세요!!*/
//클래스메서드(static 메서드) 와 인스턴스메서드
package JavaTest;
class MyMath2{
long a, b; //<--요놈 뭐게? 바로 인스턴스변수 ~~고유한 값인놈! 끝 외워~
long add(){ //() 요건 멀까? 앞에서 했던건 들어간건 기억나남? 매개변수(a,b)를 위에서 선언해줘서
return a+b; // 사실 넣을 필요가 없지! 이런 구조가 싫다면 위에 변수 빼버리고 넣으면 끝
}
long substract(){
return a-b;
}
long multiply(){
return a*b;
}
long divide(){ //나누기니깐 쫌..소수점이 나올걸 고려해서..double 강츄! >_<
return a/b;
}
////////////////요기까지가 인스턴스 변수를 이용하여 인스턴스 메서드를 작성한거임
static long add(long a, long b){ // long a 하공 b 는 클래스변수양 따로 선언 안하고 그냥 메서드에 다해버렸네 그려..
return a+b;
}
static long substract(long a, long b){
return a-b;
} //기억 났으면 좋겠어...앞전에 변수 앞에 static 붙이면 (new 어쩌구
// 저쩌구) 안붙여도 사용할수 있다는거 기억나심?! 이아이들은
static long multiply(long a, long b){ // main 가서 그냥 인스턴스고 뭐고 그냥 막 써도됨..밑에서 잘보심!
return a*b;
}
static long divide(long a, long b){
return a/b;
}
/////////////여기는 클래스변수로 클래스 메서드를 만든부분~~
}
public class MyMathTest2 {
public static void main(String[] args) {
System.out.println(MyMath2.add(20L, 30L)); //봤냐?! 순서 기억하지? static변수나 static메서드나 똑같거든 둘다 불러오는 형식.....클래스명.메서드명(값들)
System.out.println(MyMath2.substract(20L, 30L));
System.out.println(MyMath2.multiply(20L, 30L));
System.out.println(MyMath2.divide(20L, 30L)); //여기까지는 위에 static메서드를 인스턴스 따위도 하지 않고 마음대로 쓸수 있다는것을 보여준거임
///이제 맨위에서 했던 인스턴스변수와 인스턴스메서드를 쓸차례임...첫번째로 해야할것...기억나지?
MyMath2 mm = new MyMath2();
//인스턴스 메서드는 객체를 생성해야지만 호출이 가능함
mm.a = 20L;
mm.b = 30L;
System.out.println(mm.add());
System.out.println(mm.substract());
System.out.println(mm.multiply());
System.out.println(mm.divide());
//System.out.println(mm.add(20L,30L)); 이렇게 써도 실행은 됨..긍데 왜 이렇게 쓰면 안될까??
//인스턴스메서드는 a,b만으로도 충분히 작업이 가능하기 때문에 따로따로
//매개변수를 줄 필요가 없고,
//위에 클래스메서드는 인스턴스 변수 없이 매개변수만으로 작업을 수행하기
//때문에.. 말이 어렵다..?? 코드를 다시 봐봐
}
}
'::::특별한 Java Story' 카테고리의 다른 글
상속(inheritance) (0) | 2013.06.06 |
---|---|
변수의 초기화 (0) | 2013.06.04 |
인스턴스변수, 클래스(static)변수 (0) | 2013.06.03 |
오버로딩?! 메서드 오버로딩?! (0) | 2013.06.03 |
인스턴스 메서드 (0) | 2013.06.03 |