1.생성자
생성자는 객체가 생성될 때 읽을 메소드를 말한다.
메서드의 이름은 클래스와 이름을 똑같이 쓰며 매개변수를 설정하여 구현할 수 있다.
일반적으로 객체 생성시에 변수, 필드값들을 초기화 할 때에 많이 사용된다.
2.오버로드
메소드를 선언 할 때에는 매개변수를 설정하는데 종종 입력받은 매개변수가 유동적으로 바꿔야 할 필요가 있다.
물론 이름을 다르게 쓰면 문제가 없지만 사용자가 불편해지고, 또 메소드가 너무 많아지게 된다.
그러한 불편한 점을 해결하기 위한 기능이 오버로드다.
메소드의 이름은 똑같게 설정하고 매개변수는 다르게 설정한다던가 반환타입을 다르게 한다던가
예를들어 plus라는 덧셈 메소드를 만든다고 할 때에 인자를 2개 받는다고 치자.
public int Plus(int a, int b){
return a+b;
}
위와같이 쓰는데 더하기를 할 때에 소수도 들어가고 Int의 최대값인 2147483647 보다 더 큰 수가 들어갈 수도 있다.
그래서 오버로드를 사용하면
public double Plus(double a, double b){
return a+b;
}
위와같이 하면 double 타입도 무사히 덧셈을 할 수 있다.
경우에 따라서 오버로드를 잘 써주면 사용자가 매우 편리해진다.
생성자도 몰론 메소드 개념이므로 활용이 가능하다.
아래의 예제를 보고 이해해보자.
package chap04.exam03.constr; public class Robot { public static int num = 1; public String name; public String goal; public String number; public Robot(String name, String goal) { // 객체화하면 생성자가 가장 먼저 실행 됨 System.out.println("로봇 생성"); // 초기화, 원래는 this를 사용해야 함 name = name; goal = goal; number = "로봇 " + num + "호"; System.out.println(number); num = num + 1; } // 생성자 오버로드 : 다양한 방법으로 객체 생성 가능 // 오버로딩은 철저히 사용자의 편의를 위해 만들어짐 // 인자값의 수나 타입이 달라야 함 public Robot(String name) { System.out.println("로봇 생성"); name = name; number = "로봇 " + num + "호"; System.out.println(number); num = num + 1; } public Robot() { System.out.println("로봇 생성"); name = name; number = "로봇 " + num + "호"; System.out.println(number); num = num + 1; } }
package chap04.exam03.constr; public class Main { public static void main(String[] args) { Robot robot = new Robot("로오봇", "계산기"); Robot robot2 = new Robot("건설로봇", "자동차 제작"); Robot robot3 = new Robot(); Robot robot4 = new Robot("건설로봇 2"); } }
'개념 및 코딩 > 04.클래스' 카테고리의 다른 글
[JAVA]04-04.접근제한자 private, Final 상수 (0) | 2018.08.24 |
---|---|
[JAVA]04-03.Static (0) | 2018.08.24 |
[JAVA]04-01.클래스, 객체 지향 프로그래밍, 접근제한자, 클래스 다이어그램 (0) | 2018.08.23 |