오늘은 리턴타입애 대해 알아볼거야
저번에 우리가 void를 제외한 int, boolean, String등 다른 형태의 타입이면 반드시 return을 해줘야 한다고 했잖아? 그래서 오늘은 그거에 대해 이야기 하려고 해
public class Main {
public static void main(String[] args) {
int i = 로봇.get정수();
boolean b = 로봇.get논리();
사람 a사람 = 로봇.get사람();
사람 a사람2 = 로봇.get사람2();
사람 a사람3 = 로봇.get사람3();
사람 a사람4 = 로봇.get사람4();
사람 a사람5 = 로봇.get사람5(123,false);
로봇.get사람6(123,false);
}
}
class 사람{
int 학번;
boolean 출결;
}
class 로봇{
public static int get정수() {
return 0;
}
public static boolean get논리(){
return true;
}
public static 사람 get사람() {
return null;
}
public static 사람 get사람2() {
return new 사람();
}
public static 사람 get사람3() {
사람 a사람 = null;
return a사람;
}
public static 사람 get사람4() {
사람 a사람 = new 사람();
return a사람;
}
public static 사람 get사람5(int 학번, boolean 출결){
사람 a사람 = new 사람();
a사람.학번 = 학번;
a사람.출결 = 출결;
return a사람;
}
public static void get사람6(int i, boolean a) {
}
}
좀 길긴하네.. 차근 차근 보면
일단 딱 보자마자 사람 클래스와 로봇 클래스를 만들어줘야 해 그리고 기본적으로 객체를 생성하지 않았으니 static메서드가 될거야!
그리고 로봇클래스에 있는 메서드드을 보면 get정수()라고 하는 메서드는 int 타입이니까 return은 0이야.
boolean get논리()메서드는 bool타입이니까 return이 true,false 정도 되겠지?
사람 a사람 = 로봇.get사람(); 이 문장은 메서드를 어떻게 작성해야할까? 우리가 int i =0;이라고 i를 선언했을때 생각을 해보자 int는 타입이고 i는 변수고 0은 값을 넣겠다 라는 의미지?
여기서도 같이 사람이라는 타입에 a사람이라는 변수를 가지고 그 변수에 로봇.get사람();메서드를 넣겠다는 뜻이야. 그러므로 static 사람 get사람(){}이라는 메서드가 생길거고 return 타입은 뭐가 나와야할까?
먼저 아무것도 들어있지않다! 의 뜻인 null이 나올 수도 있어. 그리고 객체를 안만들었으니 return을 하면서 new사람();이라고 객체도 생성할 수가 있지.
또 get3번처럼 할 수 있어 3번은 어떻게 한거냐면 a사람을 return하고 '사람 a사람 = null;' 인데 그냥 사람 타입의 a사람변수에다가 null;을 넣어서 그냥 로봇.get사람3();이거 대신에 null을 넣은거야.
4번은 return을 a사람을 넘겨주니까 메서드안에는 사람 a사람 = new 사람(); 이렇게 적혀있지? 그러면 new 사람();을 했으니 2번과 같이 객체를 넘겨준다고 볼 수있어!
5번은 메서드에 인자가 포함되어있잖아? 만약 학번과 출결로 가정을 해볼 때 a사람.학번 = 학번; 이건 a사람객체의 학번이라는 변수에 인자로로 받은 값을 저장해주는거야 근데 학번이라는 변수가 없잖아? 그러니 사람 클래스에 학번이라는 변수를 생성해주는거야! bool값도 똑같아!!
6번의 리턴타입은 뭘까? 6번은 그냥 메서드 실행이야 그리고 6번 메서드는 void네? 그럼 return을 안해줘도 된다~ 이런 말이지..