-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창에 직접 값넣기
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();
}
여기서는 멤버, 로컬, 매개 변수를 활용하여야 하고 객체모델링을 정확히 이해하고 해야만 가능할것같다
그럼 다음 포스팅인 객체모델링 멤버, 로컬, 매개 변수에 따른 메서드의 활용에서 이 문제를 같이 해결해보자
'IT_Web > Java' 카테고리의 다른 글
[Java] 상속자, 은닉변수, super(), this의 활용 (0) | 2020.06.14 |
---|---|
[java] 객체모델링(멤버변수, 매개변수, 로컬변수)활용 및 메서드 (0) | 2020.06.13 |
[Java] 명령행 매개변수 cmd창에 직접 값넣기 (0) | 2020.06.11 |
[Java] 삼항연산자 (논리연산자, 메서드) 활용법 (0) | 2020.06.10 |
Java - 생성자 호출과 선언, 개념 (0) | 2020.06.02 |