티스토리 뷰


 
   class Friend{
    
    int num1;
    int num2; // 인스턴스 변수
    
    //가만히 보니 두 데이터를 자주 덧셈하더라
    //자주 밸셈도 하더라 그렇다면 그 기능을여기에 미리 만들어 놓자
    //그 기능을 "기능 : 메서드 " 을 여기에 미리 만들어 놓자
    
    void 더하기(){
    
      }
      void 빼기(){
    
      }
   }
  
   철수.num1 = 100;
   철수.num2=50;
   철수.더하기()
   철수.빼기()
  
   영희.num1=200;
   영희.num2=300;
   영희.빼기(); // -100출력


#실습1.



package methodex;

class Friend{
 int money1;
 int money2;
 
 void add(){
  
  System.out.println(money1+money2);
  }
 void sub(){
  System.out.println(money1-money2);
 }
}
public class MethodTest {

 public static void main(String[] args) {

  Friend min=new Friend();
  min.money1=30000;
  min.money2=20000;
  
  Friend mon=new Friend();
  mon.money1=20000;
  mon.money2=30000;
  
  min.add();
  min.sub();
  mon.add();
  mon.sub();
 }

}




  √ 메서드를 만드는 위치 :  class 안
                  밖에서는 만들 수 없음 
        메서드에서 메서드를 호출한다
    

1. 인스턴스를 만들어서 호출 
2. 그대로 이름만 불러서 호출


√  메서드 안에다 메서드를 만들 수 없다 
         ex)  int int a; num;




package methodex;

class MethodA{
 //정의부 =define ( 만드는 것 )
 void myMethod(){
  //호출부
  myName();
 }
 void myName(){
  System.out.println("내이름은 철수야");
 }
 void yourMethod(){
  
 }
 
 
}
public class MethodTest2 {

 public static void main(String[] args) {
  MethodA ai =new MethodA();
  ai.myMethod();
  //22-->5-->7-->9-->10-->11 (myName end)-->return 7-->8(myMethod end)-->22( 밑의 그림 참조 )
 }

}


<호출에 대한 흐름>







   메서드 만들기
  
 1)  print  라는 메서드 만들기
  
  void print적절한 이름을 붙여주자(){
  
  }
  
   ∨ void : <-- int, String, int[] ,Some 등... 여러가지 형태로 바뀌게 된다
      메서드의 "리턴타입"


   ∨ 이름 : 메서드 "이름"(상징), return  키워드+벨류
      return value 가 등장하면 , 이름은 "변수"로 바뀐다 
      (함수가 아니라 변수가됨 )==> 찾아가야할 상징


       ==>동시에 리턴 타입도 그에 걸맞게 변경하면 된다
       return value 가 없을 경우 그냥 void 사용
      ( return value 가 없으면 함수 )
      
  ∨ () :  수신부, 외부에서 호출할때 데이터를 넣어주면 변수를 만들고 그 데이터를 저장함 (받자)
     그러자면 그데이터에 걸맞는 변수를 선언해야 한다.
     여러개의 변수를 선언해 놓을 수 있다
     파라미터 "parameter"
     
   ∨ {} : 메서드의 "body몸체", 메서드 안에서 실제 수행할 임무를 작성한다.
     특히 }를 만나면 메서드가 종료되면서 그안에 있던 메서드에서 사용했던 흔적을 메모리에서 소멸시키고 return 하게 된다 
     

※ 오버로딩


class MethodB{


 -->메서드의 이름이 같으면서 파라미터를 다르게 하면 여러개의 메서드를
 중복해서 만들 수 있다  
   => 이런 기능을 "오버로딩"이라고 한다.
 

void print(char d, char c){
  
 }
 void print(char c){
  
 }
 void print(){
  
 }
 void print(int count){
  
  
 }

 void print(double d) {

  
 }


#실습


package methodex;

class MethodB{
 void print(int count){
  //count는 print 메서드 안에서만 사용가능한 지역변수
  for(int i=0; i<count;i++){
   System.out.println(i+1+"출력");
  } //for end
 } // void end
} // class end


public class MethodTest3 {

 public static void main(String[] args) {
  MethodB obj = new MethodB();
  
  obj.print(5);  //<-- 5번
  System.out.println("====================");
  obj.print(10);  //<---10번
  System.out.println("====================");
  obj.print(20);  //<---20번


 }

}


#return 사용 실습



package methodex;

class MethodB{
 void print(int count){

  int i=0;
  while(true){
   System.out.println(i+1+"출력");
   i++;
   if(i==count){
    return;
   }
  }
  
 }
}
public class MethodTest3 {

 public static void main(String[] args) {
  MethodB obj = new MethodB();
  
  obj.print(5);  //<-- 5번
  System.out.println("====================");
  obj.print(10);  //<---10번
  System.out.println("====================");
  obj.print(20);  //<---20번
 }



--> 아규먼트를 보낸다. (파라미터가 받는다)
--> 서로 약속이 맞아야한다.
  ex) 아규먼트는 1.1 이고  파라미터는 int num이면



√ 메서드에서 return 해 주는 값을 받아보자!
 
 메서드 만들기(define=정의)



 #1. 언제든 종료할 수 있다.
 void m(){
 
  if()
   return;
 }



 #2. 종료할 때 데이터를 다시 보낼 수 있다.(리턴 밸류)


 void m(){
  return 값;  ※ 이때는 메서드이름 m 이 변수로 바껴야한다.
     변수로 바꾸자면 void를 리턴밸류에 맞게
     적용해 줘야한다.
 }


 ------활용



 int m(){
  return 10;  -->void m  = 10  대입시켜 놓겠다
      int  m  = 10
 }
 
 
 String m(){
  return "안녕"; //"안녕"String 임으로 ( void--> String )바꿔줌
 }
 int m(){
  return 5/2; // 정수 임으로 ( void-->int )
 }
 int m(){
  return 'A'+1;
 }
 double m(){
  return 5/2.0 + (int)5.6 // 실수 임으로 (void-->double)
 }
   


#실습. 계산기 만들기 (완성)


package methodex;

import javax.swing.JOptionPane;


class MethodC{
 int num1;
 int num2;


 int add(){
  return num1+num2;
 }
 int sub(){
  return num1-num2;
 }
 int mul(){
  return num1*num2;
 }
 double div(){
  if(num2==0){
   return num2;
   
  }else{
   return num1/(double)num2;
  }
   
 }
}
public class MethodTest4 {

 public static void main(String[] args) {
  MethodC calc=new MethodC();
  
  calc.num1=Integer.parseInt(JOptionPane.showInputDialog("첫번째 정수를 입력하세요"));
  calc.num2=Integer.parseInt(JOptionPane.showInputDialog("두번째 정수를 입력하세요"));
  
  int result=0;
  result=calc.add();
  System.out.println("덧셈 : "+result);
  result=calc.sub();
  System.out.println("뺄셈 : "+result);
  result=calc.mul();
  System.out.println("곱셈 : "+result);

  double res2=0;
  res2=calc.div();
  if(calc.num2==0){
   System.out.println("나눌 수  없습니다.");
  }else{
   System.out.printf("나눗셈 : %.1f", calc.div());
  }
  
  
 }

}




'Programing > Java' 카테고리의 다른 글

Java1 - 17. Contructor  (0) 2017.05.01
Java1 - 16. private  (0) 2017.04.28
Java1 - 14. class  (0) 2017.04.26
Java 이용 - ATM기 작성  (0) 2017.04.26
Java1 - 12. while문  (0) 2017.04.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함