Java

JAVA 객체 & 메소드

wlals5855 2024. 9. 27. 11:18
public class Method02 {
	public static void main(String[] args) {
		
		Example ex1 = new Example();
		
		ex1.print99dan();

		ex1.add('a', 'b'); // char 타입(2) >> int 타입(4): 자동 형 변환
		
		System.out.println(); // 200
	}
}

⭐자바 객체 지향 프로그래밍

  • '클래스': 객체를 생성하기 위한 템플릿
  • '클래스'의 구조: 필드, 생성자, 메서드
  • 클래스의 필드: 클래스의 특성이 담긴 속성
  • 클래스의 메서드: 클래스 내부에서 속성을 사용하거나 특정 작업을 수행하는 코드 블럭

✔️클래스 내에 정의

  • 클래스의 객체가 수행할 수 있는 동작
  • 프로그램의 재사용성과 구조를 향상시키는 역할

✔️ 메서드의 구조

ReturnType methodName(Parameter List) {
// 		메서드 기능, 동작 정의
}

 

✔️ ReturnType(반환 유형)

  • 메서드가 작업을 수행한 후 반환하는 데이터의 유형을 지정
  • 반환 유형이 없는 경우 void로 지정

✔️ methodName(메서드 이름)

  • 메서드를 식별하는 이름
  • 작업을 대표하여 설명하는 동사로 명명하는 것이 일반적

✔️ Parameter List(매개변수 목록)

  • 메서드에 전달되는 입력 값들의 목록
  • 0개 이상으로 지정(지정하지 않을 수 있으며 원하는 개수만큼 전달도 가능)
  • 각 매개변수는 자료형과 함께 선언
    >>각 메서드의 지역 변수로 사용
class Calculator {
	// 계산기의 덧셈 기능
	
	int addNumbers(int a, int b) {
		// 메서의 반환값 작성
		// : return 키워드를 사용하여 지정된 타입의 데이터를 반환
		int sum = a + b;
		String name = "장지민";
		
		return sum;
	}
}
  • addNumbers 메서드: 이 메서드는 두 개의 정수 a와 b를 더한 값을 반환하는 역할
  • int a와 int b는 메서드에 전달된 두 개의 매개변수
  • sum = a + b;는 두 숫자의 합을 계산하여 sum 변수에 저장
  • return sum;은 더한 값을 반환, 메서드를 호출하는 곳에서 사용할 수 있다.
public class Method01 {
	public static void main(String[] args) {
		
		// 메서드 사용
		// >> 해당 메서드가 정의된 클래스의 객체를 생성
		// >> .연산자를 사용하여 호출
		Calculator calc = new Calculator();
		
		System.out.println(calc.addNumbers(10, 20)); // 30
		
		int result = calc.addNumbers(10, 20);
		int result2 = calc.addNumbers(70, 50);
		System.out.println(result); // 30
		System.out.println(result2); // 120
	}
}
  • Calculator calc = new Calculator();는 Calculator 클래스의 객체 calc를 생성
  • System.out.println(calc.addNumbers(10, 20));로 addNumbers 메서드를 호출 10, 20합인 30반환 후 출력
  • int result = calc.addNumbers(10, 20);
  • calc.addNumbers(10, 20)의 반환값(30)을 result 변수에 저장
  • System.out.println(result)을 통해 값을 출력
  • result2 변수도 동일하다.

메서드는 직접 출력과 변수에 저장해 출력이 가능하다. 

Calculator 클래스에 있는 속성인 name = '장지민';은 return 값에 포함되지 않아 반환 되지 않는다.

 

⭐메서드

  • 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것
  • 어떤 값을 입력하면 해당 값으로 작업을 수행하여 결과를 반환
  • 메서드의 구조 >> 선언부, 구현부
  • 반환타입 메서드명 () : 선언부
    { 메서드 호출 시 수행될 코드 } : 구현부
  • 메서드를 정의한다 == 선언부와 구현부를 작성한다

✔️ 메서드의 선언부 

  • '반환타입', '메서드명', '매개변수 선언'

✅ 매개변수(parameter) 선언

  • 메서드가 작업을 수행하는데 필요한 값들(입력)을 제공받기 위한 것
  • 필요한 값의 개수만큼 변수를 선언하여 각 변수 간의 구분은 쉼표(,)를 사용
  • 변수들의 데이터 타입이 같더라도 변수의 타입을 생략할 수 X
    int add (int x, y) {...} - Error
  • +) 메서드 내부의 지역 변수

✅반환 타입(return type)

  • 메서드의 작업수행 결과(출력)인 반환값의 타입을 명시
  • 반환값이 없는 경우 void 키워드를 사용

✔️ 메서드의 구현부

  • 메서드 선언부 다음에 오는 중괄호{}

return문

  • 메서드의 반환타입이 void가 아닌 경우, 구현부{} 안에 반드시 'return 반환값타입데이터'이 포함
  • 해당 반환값은 반환타입과 일치하거나 적어도 자동 형변환이 가능한 것
  • 자동 형 변환: 작은 데이터 > 큰 데이터
int example() {
 short a = 10;
 return a;
}
  • return문은 단 하나의 값만을 반환 가능

⭐ 정적 메서드

메서드 앞에 static 키워드를 붙여 클래스(정적)메서드 생성 >> 인스턴트 생성 없이도 호출 가능한 메서드

✔️ 사용 권장사항

클래스 설계 시, 변수(속성) 중 모든 인스턴스가 고통적으로 상용하는 값
인스턴스 변수를 사용 않는 경우에 static 사용 >> 클래스 메서드 내에서 인스턴스 변수 호출 X 

class Operator {
	// 인스턴스 변수
	int a, b;

 

int add() {return a+ b;}
int subtract() {return a - b;}
// 정적 메서드: 인스턴스 변수와 관계없이 매개변수만으로 작업
static int multiply(int a, int b) {return a * b;} //인스턴스 생성없이 사용 가능
static int divide(int a, int b) {return a / b;}
}

인스턴스 메서드: 인스턴스 변수 a, b가 필요한 작업 << 매개변수가 필요하지 않는 경우가 있음

 

<코드예시>

public class Method04 {
		public static void main(String[] args) {
			System.out.println("===인스턴스 생성===");
			//인스턴스 생성
			Operator op = new Operator();
			op.a = 10;
			op.b = 20;
			System.out.println(op.add());
			System.out.println(op.add());
			
			System.out.println("===정적 메서드===");
			// 정적(클래스) 메서드 호출
			// : 클래스명.메서드명(매개변수...);
			int result1 = Operator.multiply(10, 20);
			int result2 = Operator.divide(10, 20);
			
			System.out.println(result1); // 200
			System.out.println(result2); // 0