반응형
- 메소드
- 객체의 동작(기능)
- 호출해서 실행할 수 있는 중괄호 { } 블록
- 메소드 호출하면 중괄호 { } 블록에 있는 모든 코드들이 일괄 실행
- 메소드 이름
- 자바 식별자 규칙에 맞게 작성
- 변수명과 동일
- 일반적으로 변수명은 명사
- 메소드명은 동사 또는 동사+명사 형태
- 메소드 호출
- 메소드는 클래스 내, 외부의 호출에 의해 실행
- 클래스 내부: 메소드 이름으로 호출
- 클래스 외부: 객체 생성 후, 참조 변수를 이용해 호출
- 리턴(return) 문
- 메소드 실행을 중지하고 리턴값 지정하는 역할
- 리턴값이 있는 메소드는 반드시 리턴(return) 사용해 리턴값 지정해야함
- 리턴문 뒤에 실행문 올수 없다.
- 메소드 실행을 강제 종료 시키는 역할
public class Car {
// 인스턴스 메소드, 비정적 메소드
// non-static 메소드
// 객체의 개별적인 동작
// 객체 생성 후 호출 된다.
// 참초변수를 통해 호출 - car.run()
int run(String message) {
System.out.println("run메소드 실행");
System.out.println("전달된 매개값 : " + message);
return message.length();
}
void stop() {
System.out.println("stop메소드 실행");
}
void sound() {
System.out.println("sound메소드 실행");
}
// static 메소드 - (정적 메소드)
// 객체 생성 유무와 관계 없이 사용 가능
// 클래스명.메소드명 - Car.isLeftGas
static void isLeftGas() {
System.out.println("isLeftGas");
}
}
==============================================================
public class CarDemo {
public static void main(String[] args) {
Car.isLeftGas();
Car car = new Car();
int strSize = car.run("Hello");
System.out.println("strSize : " + strSize);
car.stop();
car.sound();
System.out.println();
// static메소드 호출
Car.isLeftGas();
// 참조변수를 통한 호출 (권장X)
car.isLeftGas();
}
}
non-static 메소드는 객체 생성후 호출해야하지만,
static은 객체 생성 유무와 관계 없이 사용 가능
- 메소드 오버로딩
- 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것
- 메소드 이름만 같을 뿐 서로 동일한 메소드가 아니다.
- 메소드 오버로딩의 조건
- 메소드 이름이 동일해야 한다.
- 매개변수의 개수, 매개변수의 타입, 매개변수 타입의 순서가 달라야 한다.
- 반환 타입은 메소드 오버로딩과 무관하다.
- 매개변수의 이름은 메소드 오버로딩과 무관하다.
- 문자열 계산기 (간단한 예외처리까지)
public class StringCalculator {
int add(int a, int b) {
return a + b;
}
int add(String a, String b) {
int num1 = 0;
int num2 = 0;
try {
num1 = Integer.parseInt(a);
num2 = Integer.parseInt(b);
} catch (Exception e) {
System.out.println("올바른 값을 입력하세요");
}
return num1 + num2;
}
public int add(String a, int b) {
int num1 = 0;
try {
num1 = Integer.parseInt(a);
} catch (NumberFormatException e) {
System.out.println("올바른 값을 입력하세요");
return 0;
}
return num1 + b;
}
public int add(int a, String b) {
int num1 = 0;
try {
num1 = Integer.parseInt(b);
} catch (NumberFormatException e) {
System.out.println("올바른 값을 입력하세요");
return 0;
}
return a + num1;
}
}
==============================================
public class StringCalculatorEx {
public static void main(String[] args) {
StringCalculator calculator = new StringCalculator();
int result1 = calculator.add(10, 2);
System.out.println(result1);
int result2 = calculator.add("10", "2");
System.out.println(result2);
int result3 = calculator.add("10", 2);
System.out.println(result3);
int result4 = calculator.add(10, "2");
System.out.println(result4);
// 잘못된 매개값 전달
calculator.add("aaaa", "2");
}
}
오류메세지 - 매개값 잘못 전달시
메인 메소드를 실행하면 숫자타입으로 변환할 수 없는 경우
catch 구문이 실행되며 결과값으로 0을 반환한다.
- 인스턴스 멤버와 this
- 인스턴스 멤버
- 객체(인스턴스) 마다 가지고 있는 필드와 메소드
- 이들을 각각 인스턴스 필드, 인스턴스 메소드라고 부름
- 인스턴스 멤버는 객체 소속된 멤버이기 때문에 객체가 없이 사용불가
- this
- 객체(인스턴스) 자신의 참조(번지)를 가지고 있는 키워드
- 객체 내부에서 인스턴스 멤버임을 명확히 하기 위해 this. 사용
- 매개변수와 필드명이 동일할 때 인스턴스 필드임을 명확히 하기 위해 사용
반응형
'학습 > JAVA' 카테고리의 다른 글
7. 상속(Inheritance) (상속, 부모 생성자 호출 super()) (0) | 2022.10.11 |
---|---|
6. 클래스(정적(static), 인스턴스, 싱글톤(singleton), 상수, 접근 제한자, Getter & Setter (1) | 2022.10.07 |
6. 클래스(생성자) (0) | 2022.10.05 |
5. 열거 타입 (0) | 2022.10.05 |
5. 참조 타입 (0) | 2022.10.04 |
댓글