
메소드 Method(=함수)
- 문법
- 정적 메소드 에서 정적 메소드 호출 가능
- 정적 메소드에서 인스턴스 멤버 사용 X
- 정적 메소드는 this 참조변수 사용 불가 → 객체가 없을 때도 호출 가능하기 때문에 현재 객체 필요 X
- 정적 블록(정적 초기화 블록) - 클래스가 메모리에 로드될 때 한 번만 실행되는 문장들의 집합
함수의 호출기본형 main 내부에서 m2 실행 시 m2의 중괄호 사이인 내부가 열린다.
실행 종료 시 return 값은 “m2” ⇒ String 결과 값 <m2();> → <”m2”>로 변경 파라미터 = 매개변수
static void (){} → 괄호를 파라미터로 지칭 / 괄호 안 인수 → 아규먼트
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();
}
}
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);
}
}
계산기메소드에 계산기 코드 입력 / 메소드 안에 메소드 입력 불가 계산기 실행 코드 / main에서 호출 후 출력
// 계산기 클래스 = 설계도
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);
}
}
생성자
객체를 생성할 때 객체를 초기화를 하기 위해 사용하는 특수한 메소드생성자 이름은 클래스 이름과 동일
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) - 매개변수가 없는 생성자자동적으로 모든 매개 변수들을 기본값으로 초기화 / 값 = 0
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);
}
}
기본 생성자가 추가되지 않는 경우
→ 생성자를 하나라도 선언하면, 컴파일러는 기본 생성자를 추가 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