ジャワ島第6章の方法です


フィールドは読み取りおよび変更できますが、さまざまな機能を実行するために他のオブジェクトを作成することもできます.メソッドは、オブジェクト間でデータを転送するために使用されます.
各値は外部から取得するか、実行後に任意の値を返すことができます.
メソッド宣言
宣言子(戻りタイプ、メソッド名、パラメータ宣言)と実行ブロックから構成されます.
メソッド宣言は署名とも呼ばれます.
// 메소드 형태
리턴타입 메소드이름 ([매개변수 선언,...]){
	실행코드
}

// 생성자 형태
클래스 ([매개변수 선언, ...]) {
	객체의 초기화 코드
}
講義
메소드 정의
접근지정자 리턴타입 메소드명(매개변수) {
	//동작할 내용
  }
	   

메소드는 정의해두었다가 사용할 때 호출해 사용
(호출)
리턴타입 변수명 = 메소드명(매개변수)
かいふく
メソッドの実行後に返される値のタイプ.返されない場合がありますが、結果を呼び出した結果の場所に渡す場合は、戻り値が必要です.
// 리턴 값이 없는 메소드
void powerOn(){...}
// 불러올때 전해줄 매개변수가 없으니 단순 호출
poserOn();


// 리턴이 있는 메소드
double avg(int x, int y){...}
// 불러올 때 필요한 값을 전해줘야하니
// double result = avg(10, 20);
/* 하지만 리턴타입이 있다고 해서 반드시 리턴값을 변수에 저장할 필요는 x
단순히 메소드 실행만이 중요하다면 변수 선언 없이 메소드 호출도 가능하다 */

avg(10, 20);
メソッド名
注意事項
1.数字の先頭($および$を除く)は使用できません.特殊文字は使用できません.
2.慣例では、メソッド名は小文字
3.異なる単語が混ざった名前の場合、後ろの単語の頭文字は大文字になります
void run(){ }
void startEngine(){ }
String studentName(){ }
int get_scores(){ }
パラメータ宣言
-パラメータは、メソッドの実行時に必要なデータを外部から取得するために使用します.パラメータが必要な場合もあれば、ない場合もあります.
-外部クラスからex.Bookクラスを呼び出す方法は、Book b = new Book();を使用してBookオブジェクトを作成し、参照変数としてb変数に追加します(.)メソッド名(各値、...)メソッドブロックは、形式で呼び出されてこそ実行できます.
(Book 클래스)
public class Book {
	int sum(int x, int y) {
    	int hap = x + y;
    	return hap;
    }
}


(메소드 호출)
public class Booknum {
	public static void main(String[] args) {
    	Book b = new Book();
        int result = b.hap(5,6);
        System.out.println(result);
    }
}
パラメータの数がわかりません.
場合によっては、メソッドを宣言するときにパラメータの数を決定できない場合があります.この場合の解決策は、次のようにパラメータをアレイタイプとして宣言することです.
// (1) 배열 타입으로 선언
int sum1(int[] values) { }

// (2) 배열을 생성하지 않고 값의 리스트만 넘겨주는 방법도 있다.
int sum2(int ... values) { }
sum 1()メソッドを呼び出すと、配列を渡すことで配列内のすべてのアイテム値を渡すことができます.配列内のアイテム数は呼び出しによって決まります.
(1)
int[] values = { 1,2,3 };
int result = sum1(values);
int result = sum1(new int[] { 1,2,3,4,5 });

(2)
int[] values = { 1,2,3 };
int result = sum2(1,2,3);
int result = sum2(values);
int result = sum2(new int[] { 1,2,3,4,4 });
(コース)
方法
// 경우에 따라 메소드를 선언할 때 매개변수의 개수를 알 수 없는 경우가 있다
// 해결책은 매개 변수를 배열 타입으로 선언하는 것이다
// 방법1. 
public class Computer {
	int sum1(int[] values) {
		int sum = 0 ;
		for(int i=0; i<values.length; i++) {
			sum += values[i];
		}
		return sum;
	}
	
	// 방법 2.
	//... : 매개변수에 ...을 사용해 선언하면 메소드 호출시 넘겨준 값의 갯수에 따라 배열이 생성된다
	int sum2(int ... values) {
		int sum = 0;
		for(int i=0; i<values.length; i++) {
			sum += values[i];
		}
		return sum;
	}
}
メイン
public class ComputerExample {
	public static void main(String[] args) {
		Computer myCom = new Computer();
		
		// 방법 1 호출
		// 값을 선언한 뒤 넣어주기
		int values1[] = {1,2,3};
		int result1 = myCom.sum1(values1);
		System.out.println("result1 : "+result1);
		
		// 직접 뒤에 넣어주기
		int result2 = myCom.sum1(new int[] {1,2,3,4,5});
		System.out.println("result2 : " + result2);
		
		
		
		// 방법2 호출
		// ... 을 사용해준 (매개변수 갯수를 모를때 만들어준 배열) 입력
		int result3 = myCom.sum2(1,2,3);
		System.out.println("result3 : " + result3);
		
		int result4 = myCom.sum2(1,2,3,4,5);
		System.out.println("result4 : " + result4);
	}
}
リターンステートメント
戻り値のあるメソッド、戻り値のないメソッド
-メソッド宣言に戻りタイプがあるメソッドは、戻り文を使用して戻り値を指定する必要があります.return文を実行すると、メソッドはすぐに終了します.
voidの戻り値として宣言されていないメソッドでは、return;形式の戻り文を使用して、使用時にメソッドの実行を強制的に終了することもできます.
-表示された例を持ち帰る
int plus(int x, int y) {
	int result = x + y;
    	return result;
}
-voidを返さないreturnの例を使用
void run(){
	while(true){
    		if(num>0) {
            		System.out.println("진행하세요");
                    	num-= 1;
                } else {
                	System.out.println("중지합니다");
                    return;
                    // run 메소드 실행 종료
                }
        }
}


(강의)
```java
메소드 종류
public int testSum() { // 리턴타입이 int인 메소드
	hap = num1 + num2;
	return hap;
}
	
public double testSum1() { // 리턴타입이 double 인 메소드
	hap = num1 + num2;
	return hap;
}
public void testSum2() { // 리턴타입이 없는 void 메소드
	hap = num1 + num2;
	System.out.println(hap);
}	
void print() { // 리턴타입이 없는 void 메소드
	System.out.println(hap);
}
メソッド呼び出し
クラス内および外部呼び出しによって実行されます.
オブジェクト内と外部で呼び出す
-クラスで他のメソッドを呼び出す場合、메소드(매개값, ...);として記述することができる.
-클래스 변수 = new 클래스(…);しなくてもいいです.
-メソッドはオブジェクトのメンバーであり、オブジェクトが存在しない場合はメソッドも存在しないため、オブジェクトの外部から呼び出すときにクラスからオブジェクトを作成する必要があります.클래스 변수 = new 클래스(…);-オブジェクトが作成されている場合、参照変数のあるポイント(.)演算子を使用してメソッドを呼び出すことができます.ポイントは、オブジェクトが所有するフィールドまたはメソッドにアクセスするオブジェクトアクセス演算子です.
public class Calcu {
	int plus(int x, int y) {
		int result = x + y;
		return result;
	}

	double avg(int x, int y) {
		double sum = plus(x, y); // 2. int plus() 호출
		double result = sum / 2;
		return result;
	}

	void execute() {
		double result = avg(7, 10); // 1. double avg() 호출
		println("실행결과: " + result); // 3. 계산 후 println() 호출
	}

	void println(String message) {
		System.out.println(message);
	}
}
// 객체에서 같은 멤버인 다른 메소드 호출시 아래와 같은 형태
// int plus(int x, int y)
// double sum = plus(x, y);
// double result = avg(7, 10);

---------------------------

public class CalcuEx {
	public static void main(String[] args) {
    		Calcu myCalc = new Calcu();
            myCalc.execute();
        }
}
// 외부 객체에서 다른 객체 호출시 아래와 같은 형태
// Calcu myCalc = new Calcu();
// 참조변수.메소드(…); ←리턴값이 없거나, 있어도 리턴값을 받지 않을 경우
// myCalc.execute();
// 타입변수 = 참조변수.메소드(…) ←리턴값이 있고, 리턴값을 받고 싶을 경우
// int sum = myCalc.plus();
メソッドオーバーロード
クラスで複数の同名メソッドを宣言することをメソッドオーバーロードと呼びます.辞書の意味は多載です.1つのメソッド名に複数の機能が含まれていることから命名された名前と考えられる.
(コース)
// 메소드 명을 똑같이 해도 매개변수가 다르면 오류 안남 : 메소드 오버로딩
// 메소드 오버로딩 규칙
// 1.메소드 명이 동일 2.매개변수가 티입,순서,갯수 달라야함 3.리턴타입은 상관 없
// 메소드의 리턴타입과 매개변수의 리턴타입은 같아야함
	
int sum(int num1, int num2) {
	return num1+num2;
}
double sum(double num1, double num2, double num3) {
	return num1 + num2 + num3;
}
String sum(String num1, String num2) {
	return num1 + num2;
}