오버로딩

#메소드 #생성자 #오버로딩
Dec 19, 2023
오버로딩

메소드 Method(=함수)

  • 문법
  • 정적 메소드 에서 정적 메소드 호출 가능
  • 정적 메소드에서 인스턴스 멤버 사용 X
  • 정적 메소드는 this 참조변수 사용 불가 → 객체가 없을 때도 호출 가능하기 때문에 현재 객체 필요 X
  • 정적 블록(정적 초기화 블록) - 클래스가 메모리에 로드될 때 한 번만 실행되는 문장들의 집합
💡
함수의 호출
public class MethodEx01 { static void m1(){ System.out.println("m1"); } public static void main(String[] args) { m1(); } }
기본형
public class MethodEx01 { static void m1(){ System.out.println("m1"); } static String m2(){ System.out.println("m2"); return "m2"; } public static void main(String[] args) { m1(); m2(); } }
main 내부에서 m2 실행 시 m2의 중괄호 사이인 내부가 열린다. 실행 종료 시 return 값은 “m2” ⇒ String 결과 값 <m2();> → <”m2”>로 변경
public class MethodEx02 { static void m3(int n1){ System.out.println("m3: " + n1); } static void m4(int n1, int n2){ System.out.println("m4: " + n1); System.out.println("m4: " + n2); } public static void main(String[] args) { m3(1); m4(1,2); } }
파라미터 = 매개변수 static void (){} → 괄호를 파라미터로 지칭 / 괄호 안 인수 → 아규먼트
계산기
계산기
// 계산기 클래스 = 설계도 public class Calculator { public int add(int n1, int n2){ return n1 + n2; } public int minus(int n1, int n2){ return n1 - n2; } public int multi(int n1, int n2){ return n1 * n2; } public double divide(int n1, int n2){ return (double) n1 / n2; }
메소드에 계산기 코드 입력 / 메소드 안에 메소드 입력 불가
public class CalculatorApp { public static void main(String[] args) { Calculator cal = new Calculator(); int result = cal.add(50, 80); System.out.println("add: " + result); int result1 = cal.minus(50, 80); System.out.println("minus: " + result1); int result2 = cal.multi(50, 80); System.out.println("multi: " + result2); double result3 = cal.divide(50, 80); System.out.println("divide: " + result3); } }
계산기 실행 코드 / main에서 호출 후 출력

생성자

객체를 생성할 때 객체를 초기화를 하기 위해 사용하는 특수한 메소드
객체를 생성할 때 객체를 초기화를 하기 위해 사용하는 특수한 메소드
class Pizza{ // 필드 (자료형) int size; String type; // 매개 변수가 없는 생성자 = 값 고정 public Pizza(){ size = 12; type = "슈퍼슈프림"; } // 매개 변수가 있는 생성자 = 원하는 값 입력 가능 public Pizza(int s, String t){ size = s; type = t; } } public class PizzaTest { public static void main(String[] args) { Pizza obj1 = new Pizza(); System.out.printf("(%s, %d)\n", obj1.type, obj1.size); Pizza obj2 = new Pizza(24, "포테이토"); System.out.printf("(%s, %d)", obj2.type, obj2.size); } }
생성자 이름은 클래스 이름과 동일
기본 생성자 (default contructor) - 매개변수가 없는 생성자
기본 생성자 (default contructor) - 매개변수가 없는 생성자
class Box01{ int width, height, depth; } public class BoxTest01 { public static void main(String[] args) { Box01 b = new Box01(); System.out.printf("상자의 크기: (%d, %d, %d)", b.width, b.height, b.depth); } }
자동적으로 모든 매개 변수들을 기본값으로 초기화 / 값 = 0
💡
기본 생성자가 추가되지 않는 경우 → 생성자를 하나라도 선언하면, 컴파일러는 기본 생성자를 추가 X

오버로딩

💡
매개 변수만 다르면 메소드 이름은 동일 가능
public class OverloadEx01 { public static void main(String[] args) { System.out.println(1); System.out.println(1.0); System.out.println("1"); } }
public class MyMath { int add(int x, int y) { return x+y; } int add(int x,int y, int z) { return x+y+z; } int add(int x, int y, int z, int w){ return x+y+z+w; } public static void main(String[] args) { MyMath obj; obj = new MyMath(); System.out.print(obj.add(10, 20)+" "); System.out.print(obj.add(10, 20,30)+" "); System.out.print(obj.add(10, 20,30,40)+" "); } }
Share article

from-web-developer