이롭게 현명하게

[JAVA] 자바 클래스 메소드 본문

JAVA

[JAVA] 자바 클래스 메소드

dev_y.h 2023. 4. 18. 18:20
728x90
반응형


 

목차

 

메소드 선언

리턴타입

매개 변수 선언

매개변수의 수를 모를 경우

리턴(return) 문

메소드 오버로딩

 


 

<정리>

메소드 (method) : 객체의 동작에 해당하는 중괄호 블록

리턴타입 메소드이름([매개변수선언, ...]){
	실행할 코드
}

메소드 오버로딩(Overloading) : 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것

class 클래스명{

	리턴타입 메소드이름 (타입변수){
    	실행 내용
    }
	
    리턴타입 메소드이름(타입변수,타입변수){
    	실행내용
    }


}

<오버로딩 조건>

매개 변수 타입, 개수, 순서 중 하나가 달라야 한다.

<오버로딩 하는 이유>

매개값을 다양하게 받아 처리할 수 있도록 하기 위해


[메소드 선언]

메소드 (method) : 객체의 동작에 해당하는 중괄호 블록

메소드는 필드를읽고 수정하는 역할도 하지만 다른 객체를 생성해서 다양한 기능을 수행하기도 한다.

메소드는 객체 간의 데이터 전달의 수단으로 사용된다.

외부로부터 매개값을 받을 수도 있고, 실행 후 어떤 값을 리턴할 수도 있다.

리턴타입 메소드이름([매개변수선언, ...]){
	실행할 코드
}

 


[리턴타입]

리턴타입 : 메소드가 실행 후 리턴하는 값의 타입

매소드는 리턴값이 있을 수도 있고 없을 수도 있다.

메소드가 실행 후 결과를 호출한 곳에 넘겨줄 경우에는 리턴 값이 있어야 한다.

void powerOn(){ ... }
double divide(int x,int y) { ... }

powerOn();
double result = divide(10,20);

[매개 변수 선언]

 

// Calculator.java //

public class Calculator {
	
	void powerOn() {
		System.out.println("전원을 켭니다.");
	}
	int plus(int x, int y) {
		int result = x+y;
		return result;
	}
	
	void powerOff() {
		System.out.println("전원을 끕니다.");
	}
}
// Main.java //

public class Main {

	public static void main(String[] args) {
		Calculator myCalc = new Calculator();
		myCalc.powerOn();
		
		int result1 = myCalc.plus(5, 6);
		System.out.println("result1 : "+result1);
		
		byte x= 10;
		byte y = 4;
		
		double result2 = myCalc.plus(x, y);
		System.out.println("result2 : "+result2);
        myCalc.powerOff();
	}

}

 


[매개변수의 수를 모를 경우]

메소드의 매개 변수는 개수가 이미 정해져 있는 것이 일반적이지만, 상황에 따라 메소드를 선언할 때 매개 변수의 개수를 알 수 없는 경우가 있다.

몇 개의 매개변수가 입력될지 알 수 없기 때문에 매개 변수의 개수를 결정할 수 없다.

이럴 때는 매개 변수 타입을 배열 타입으로 선언한다.

자료형 메소드명(자료형[] 배열명){ ... }

매개 변수를 배열 타입으로 선언하면 메소드를 호출하기 전에 배열을 생성해야 하는 불편한 점이 있다.

그래서 배열을 생성하지 않고 값의 리스트만 넘겨주는 방법도 있다.

메소드의 매개변수를 "..."를 사용하여 선언하게되면, 메소드 호출 시 넘겨준 값의 수에 따라 자동으로 배열이 생성되고 매개 값으로 사용된다.

자료형 메소드명 (자료형 ... 변수명) { ... }

 

package study;

public class Calculator {
	
	void powerOn() {
		System.out.println("전원을 켭니다.");
	}
	int plus(int x, int y) {
		int result = x+y;
		return result;
	}
    // 매개변수의 수를 모를 때
	int sum(int ... values) {
		int result=0;
		for(int i = 0;i<values.length;i++) {
			result += values[i];
		}
		return result;
	}
    
	void powerOff() {
		System.out.println("전원을 끕니다.");
	}
}
public class Main {

	public static void main(String[] args) {
		Calculator myCalc = new Calculator();
		myCalc.powerOn();
		
		int r = myCalc.sum(1,2,3);
		System.out.println(r);
        	int r1 = myCalc.sum(new int[] {1,2,3,4});
		System.out.println(r1);
	}

}

 

" ... " 으로 선언된 매개 변수의 값은 메소드 호출 시 리스트로 나열해 준다.

이때 매개변수는 배열 타입이므로 배열을 직접 매개 값으로 사용해도 된다.

 

 


[리턴(return)문]

리턴문이 있어야 하는 데이터형 : int , double, float, boolean, byte, String, char 등

리턴문이 없어도 되는 데이터형 : void

 


[메소드 오버로딩]

메소드 오버로딩(Overloading) : 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것

메소드 오버로딩의 조건은 매개 변수 타입, 개수, 순서 중 하나가 달라야 한다.

메소드 오버로딩이 필요한 이유 : 매개값을 다양하게 받아 처리할 수 있도록 하기 위해

class 클래스명{

	리턴타입 메소드이름 (타입변수){
    	실행 내용
    }
	
    리턴타입 메소드이름(타입변수,타입변수){
    	실행내용
    }


}

메소드 오버로딩시 주의할 점

매개 변수의 타입과 개수, 순서가 똑같을 경우 매개 변수 이름만 바꾸는 것은 메소드 오버로딩이라고 볼 수 없다.

리턴 타입만 다르고 매개 변수가 동일하다면 이것은 오버로딩이 아니다.

리턴 타입은 자바 가상 기계(JVM)가 메소드를 선택할 때 아무런 도움을 주지 못하기 때문이다.

리턴 타입만 다르고 매개 변수가 동일하다면 오버로딩이 아니기 때문에 컴파일 오류가 발생한다.

 

 

 

[JAVA] 자바 인스턴스 멤버와 this

this : 객체 자신에 대한 레퍼런스 인스턴스(instance) 멤버 : 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드를 말한다. 인스턴스 필드, 인스턴스 메소드라고 부른다. 인스턴스 필드와 메

devyihyun.tistory.com


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

더보기

[ 참고자료 ]

 

 

 

 

728x90
반응형

'JAVA' 카테고리의 다른 글

[JAVA] 자바 정적 멤버와 static  (0) 2023.04.20
[JAVA] 자바 인스턴스 멤버와 this  (0) 2023.04.19
[JAVA] 자바 클래스 생성  (0) 2023.04.14
[JAVA] 자바 클래스 필드  (0) 2023.04.13
[JAVA] 자바 객체와 클래스  (2) 2023.04.12
Comments