728x90
반응형

-method method 선언과 호출-

 

1. 반환형이 있는 method

자료형 method 변수(){ return 값; }

호출문 ( 자료형 변수=method변수.(); )

호출하려는 method와 관련이 있는 클래스에 대한 객체생성이 필요

 

2. 반환형이 없는 method

void method 변수 (){}

호출문 ( method변수.(); )

호출하려는 method와 관련이 있는 클래스에 대한 객체생성이 필요하다.

 


class B{

void a(){ System.out.println(1); }

void b(){ System.out.println(2); }

void c(){ System.out.println(3); }

}



class C{

  public static void main(String args[]){

    B o=new B(); //배열 2번 구조 자료형[] 배열형=new 자료형[방 개수] 활용이랑 비슷하다고 생각을 하자

                //클래스 "B" 객체생성이 가능하다. 객체 생성된 주소가 변수 o에 저장된다

                //이때 자료형의 자리에는 클래스 "이름" 이 오는 것이 특징

                //또 한 클래스는 참조형으로 자료형이 될 수 있음을 기억하자

    o.a(); 		//o에 저장된 클래스 B의 객체 주소가 a()를 불러온다

                //즉, 객체생성으로 인한 주소가 o에 저장이 되고 a() method가 실행된다

                //o. a()에 대해 (.) 콤마 앞에는 클래스 주소(변수)만 사용할 수 있다

    System.out.println(4);

  }

}

// 결과는 1 2 3 4가 출력 될것이다 띄워쓰기는 생략한다

위와 같이 클래스를 객체를 생성하여 클래스 내부의 매서드를 실행시키기 아주 좋은 방법이다

이 방법은 앞으로 프로그래머로써 아주 기본이되는 것이므로 필히 기억하고 선언과 호출을 기억해야한다

 

이때 o.a();가 호출문이고 void a(){} 가 선언문이 된다

 

 

-method 활용법-

이제 기본기를 익혔으니 간단하게  다른 예문을 보도록하자


class Dog{

  void sound(){System.out.println("멍멍");}

}

class Cat{

  void sound(){System.out.println("옹야");}

}

class D{

  public static void main(String[] args){

    Dog o=new Dog();

    o.sound();

    Cat p=new Cat();

    p.sound();

  }

}

 


엔트리 포인트에서 여러 클래스를 객체생성하여 사용이 가능하다

 

 

 

 

-method 호출과 매개변수-

 

method 명은 숫자로 시작하면 안 되며, 소문자로 작성하고, 혼합은 뒤 단어의 첫머리글자를 대문자로 한다


class E{

  void a(int v1){System.out.println(1);}

    // method의 선언(헤드) 부 시그니쳐 라고 한다

    // method a에 대한 매개변수 v1은 method b의 매개변수 v1은 서로 적용받지 않는다

    // 매개변수는 v1은 호출문에 “o.a(100);“ 100 값이 v1에 저장된다

    // 자동으로 “int v1=100”이 라는 식이 성립된다

    // 또 한 v1은 실행문에서 활용이 가능하다.

  void b(char v1, int v2){System.out.println(2);}

    // method 매개변수 간에 자료형의 타입은 서로 관계가 없다.

  void c(){System.out.println(3);

}

class F{

  public static void main(String[] args){

    System.out.println(4);

    E o=new E();

    o.a(100);

    o.b('B',200); //호출할 때에는 타입의 개 수와 순서를 맞추어야 한다

    o.c();

  }

}

// 결과는 1 2 3 4 즉, method 호출문에 작성된 매개변수의 값은 호출에 필요한 조건들이며 출력이 되는 값은 아니다.



// 만약 결과 값을 매개변수 값과 같게 하려면 매개변수를 출력 값에 지정하면 된다. 
// 아래와 같이 작성해보자

void a(int v1){System.out.println(v1);} // 100

void b(char v1, int v2){System.out.println(v1); // B

System.out.println(v2) // 200

}

위의 방법은 메서드에 매겨변수로 받은 변수들의 활용이다 그 매개변수들은 실행문 즉 블럭에서 사용이가능하다

이렇게 다른 클래스에서 어떠한 값을 가지고 있는 변수를 호출시 매개변수로 지정을하게되면 클래스 내부의 값을 다른 클래스로 전달하는 효과를 가질 수 있다

 

이러한 활용을 잘 익혀두자

 

-명령행 개수 과 method 활용 예문-

명령행 개수를 활용하여 cmd창에서 값을 바꿔어 가면서 연습할 수 있다

 

2020/06/11 - [Java/Java 입문] - [Java] 명령행 매개변수 cmd창에 직접 값넣기

 

[Java] 명령행 매개변수 cmd창에 직접 값넣기

오늘은 명령행 매개변수를 알아보자 cmd창에서 입문자들이 연습을 할 때 사용하면 엔트리 포인트에 args[0]를 어떻게 활용하는지 알 수 있다 -명령행 매개변수- class AB{ public static void main(String[] args

tantangerine.tistory.com


class Gugudan{

  void print(int dan){

    System.out.println(dan+"단");

    for(int num=1; num<10; num++){ // dan 명령행 매개변수가 실행되면 지정한 숫자만큼 for문으로 실행

      System.out.print(dan); // 결과 값을 출력한다

      System.out.print("*");

      System.out.print(num);

      System.out.print("=");

      System.out.println(dan*num);

    } // 클래스 Gugudan 에서

  } // method 변수 print 매개변수 이름은

} // method 선언문의 매개변수와 같아도 무관하다

class H{

  public static void main(String args[]){

    Gugudan a=new Gugudan();

    int dan=Integer.parseInt(args[0]); // 명령행 매개변수가 지정되어 실행될 때 dan에 정수 값이 저장되고

    a.print(dan); // a.print(dan); dan이 args[0] 실행되어 method를 호출한다

  }
}

위에서 보듯이 arg[0]을 호출문에 작성하고 cmd창에서 값을 입력하여 실행할 수 있다

자세한 사항은 다음 포스팅에 설명할 수 있는 기회를 삼아 보겠다

 

 

 

-반환형이 있는 method 선언-

[선언하기]

자료형 method명(){

  명령문;

  ....

  return 값;

}

 

class H{

  int a(){System.out.println(1); return 100;}

  String b(){System.out.println(2);return "aa";}

  boolean c(){System.out.println(3);return true;}

  // 반환형 method는 return 값을 지정한다 이 때 그 값은 method 타입과 일치시킨다

}

class I{

  public static void main(String[] args){

    System.out.println(4);

    H o = new H();

    int v1=o.a(); // method a를 불러들이고 싶을 때 무 반환형과는 달리 method 타입을 같게 한다

      // 그 이유는 method a의 return 값이 100이며 그 100의 값이 호출문으로 돌아와 v1에 저장된다

      // 저장될 때 정수의 값 100이 저장되므로 자료형의 타입 int를 맞춰주어야 한다

      // 계속해서 int v1=o.a(); 에서 단독의 o.a(); 호출문에 의해

      // out.println가 발생하고 그 값은 1이 출력된다

      // v1의 값이 출력하고 싶다면 아래와 같이 System.out.println(v1); 작성하여 변수설정을 한다

      // 그 출력 값은 100이 된다

    String v2=o.b();

    boolean v3=o.c();

    System.out.println(v1);

    System.out.println(v2);

    System.out.println(v3); //결과 1 2 3 100 “aa” true

  }

}

 


반환형있는 메서드는 메서드를 실행하고 어떠한 결과 값을 메서드 호출한 곳으로 리턴시켜준다

이 반환형있는 메서드는 자바에서 아주 중요하다고 할 수 있다 

실제로 어느 프로젝트에서도 가장 기본이되는 자바 중에서도 이 메서드 활용이 제일 큰 비중을 차지할 것이다

그러니 메서드의 활용과 개념은 꼭 확인 해두자! 

 

 

-method 배열선언 return 배열 활용문 -

 

반환형있는 메서드의 리턴값을 배열로 선언하고 그에 따른 활용법을 알아보자


class M{

  int m1(){ return 1;}

  String m2(){ return "aa";}

    int[] m3(){

      int[] array={2,3,4}; // method 실행문에서 배열을 선언해서 그 배열의 변수를 return 하여

      return array; // 호출문에서 활용이 가능하다.

  }

}


class N{

  public static void main(String[] args){

    M o=new M();

    int v1=o.m1();

    String v2=o.m2();

    int[] v3=o.m3(); // return array 값은 배열이기 때문에 자료형도 1차원 배열로 만듬

    System.out.println(v1);

    System.out.println(v2);

      for(int b=0; b<3; b++){ // for 문으로 한번에 출력

        System.out.println(v3[b]);
      }
  }
}

이렇게 리턴값에 배열로 선언하여 호출문에서 그 배열을 활용할 수 있다

어떻게 보면 자바스크립트에서 함수와 모듈의 느낌이 비슷할 수 있다

그 느낌을 살려 활용법과 개념을 필히 익히도록하자

 

 

아래에 문제를 한개를 준비 했다 

밑에 호출문을 보고 여러 클래스를 만들어서 선언문을 작성 하면 된다 

 

 결과적으로 v1.printInfo() 라는 메서드를 실행하면

 

이름 : 박혁민, 지역 : 서울, 학교 : 서울초등학교, 학년 : 5

 

위의 문자열이 출력되게 코드를 작성하면 된다


class O{
	public static void main(String[] args){
    
		Location v2=new Location();	v2.name="서울";		// 객체 생성된 변수를 이용하여
        
		School v3=new School();		v3.name="서울초등학교";	// 클래스 멤버변수의 값을 할당한다
        
		Child v1=new Child();		v1.name=“박혁민”;		
        
		v1.setValue( “박혁민”, 6, v3, v2 );
        
		v1.printInfo();
	}

여기서는 멤버, 로컬, 매개 변수를 활용하여야 하고 객체모델링을 정확히 이해하고 해야만 가능할것같다

그럼 다음 포스팅인 객체모델링 멤버, 로컬, 매개 변수에 따른 메서드의 활용에서 이 문제를 같이 해결해보자

 

 

 

 

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel