퀴즈 피드백
클래스
생성자
ex1.
Model(String name, String code){}
Model (String code, String name){} => 오버로딩이 아님
ex2.
Student(String _name, boolean _isDrop, int _idNum) {}
Student(int _idNum, boolean _isDrop, String _name) {} => 오버로딩 O
public class Car {
String company = "현대자동차";
String model;
String color;
int maxSpeed;
Car(){
}
Car (String model) {
this(model, "은색", 250);
// 클래스의 다른 생성자 호출
// 매개변수 타입에 맞게 제공, 반드시 생성자 첫줄에서만 허용
}
Car (String model, String color) {
this(model, color, 250);
}
Car (String model, String color, int maxSpeed) {
this.model = model;
this.color = color;
this.maxSpeed = maxSpeed;
}
}
메소드
리턴 O => println안에서 메서드 사용해서 값 출력할 수 있다 / 반환받아서 출력하거나 활용
리턴 X => 메서드 자체에 println을 사용해서 연산이 끝난 후의 값을 출력할 수 있다 / 그냥 수행하고 끝
void 타입인데 그냥 return => 메서드를 종료하는 return;
void justStop(int num) {
if(num == 4) return; // num이 4이면 메소드 종료, 아래 코드 실행X
System.out.println(num);
}
int (리턴타입) justStop(int num2) {
// 매개변수가 int값이기 때문에 매개값으로 int값이나 int 타입으로 변환될 수 있는 값을 넘겨주어야 한다. ex. byte
if (num >= 4) return 4; // num이 4보다 크면 4 반환
return num; // 아니면 그냥 숫자 반환
// return 값은 리턴 타입이거나 리턴 타입으로 변환될 수 있는 값을 리턴해야한다.
};
메소드의 호출
메소드의 오버로딩
: 변수 타입, 순서, 개수 중 하나가 달라져야 한다. (메소드이름은 동일)
: 변수 타입, 순서, 개수가 똑같은 경우 매개 변수 이름만 바꾸는 것 or 리턴타입만 바꾸는 것은 오버로딩이라고 할 수 없다.
: 매개값을 다양하게 받아 처리할 수 있게 하기위함