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