하나의 클래스 안에, 동일한 이름의 메서드를 여러 개 정의할 수 있음.
단, 자료형이 다르고 같은 작업을 하는 함수를 정의할 때 사용
Area 라는 클래스를 생성해서 getArea라는 메서드 생성
삼항연산자 사용으로 if-else문을 사용하지않으려 노력했습니다..
package week6;
class Area{
String getArea(String x,int a, int b){
String match = (x.equals("삼각형")) ? "true" : "error";
int tri = a*b/2;
String area = (match.equals("error")) ? "error" : Integer.toBinaryString(tri);
return area;
}
String getArea(String x,double a){
String match = (x.equals("원")) ? "true" : "error";
double circle = a*a*(3.14);
String area = (match.equals("error")) ? "error" : Double.toString(circle);
return area;
}
String getArea(String x,double a, double b){
String match = (x.equals("사각형")) ? "true" : "error";
double square = a*b;
String area = (match.equals("error")) ? "error" : Double.toString(square);
return area;
}
}
삼각형 - str , int , int
원 - str, double
사각형 - str, double, double
이처럼 같은 이름의 메서드에 매개변수의 형식을 다르게해서 오버로딩을 진행.
public class에서 실행해보면,
public class HW {
public static void main(String[] args) {
Area aa = new Area();
System.out.println(aa.getArea("삼각형",4, 5));
System.out.println(aa.getArea("원",4));
System.out.println(aa.getArea("사각형",4.5, 2.3));
System.out.println(aa.getArea("삼각형",4.5, 2.3));
}
}
10
50.24
10.35
error
위처럼 나오게 된답니당
오버로딩을 쓸 때는 꼭 매개변수의 형식을 다르게 설정하기
그리고 생성자 코드블럭도 오버로딩이 가능한데, 생성자는 다음 TIL로 게재해보겠습니다