메소드 객체 내부, 외부 호출

지인·2023년 6월 6일
0

TIL

목록 보기
19/38

🐰 메소드 선언


매개 변수의 개수를 모를 경우

🐾 매개 변수를 배열 타입으로 선언

int sum1(int[] values) { }
// 방법 1
int[] values = {1, 2, 3};
int result = sum1(values);

// 방법 2
int result = sum1(new int[] {1, 2, 3, 4, 5});

🐾 배열 생성하지 않고 값의 목록만 넘겨주는 방식

int sum2(int ... values) { }
int result = sum2(1, 2, 3);
int result = sum2(1, 2, 3, 4, 5);


🐰 메소드 호출

  • 클래스 내부의 다른 메소드에서 호출할 경우에는 메소드 이름으로 호출 가능
  • 클래스 외부의 메소드를 호출하는 경우 클래스로부터 객체를 생성한 뒤 참조 변수를 이용해서 메소드를 호출

객체 내부에서 호출

🐾 메소드가 리턴값이 없거나, 있어도 받고 싶지 않을 경우

메소드 (매개값);

public class ClassName {
	void method1(String p1, int p2) {
    	...
    }
    
    void method2() {
    	method1("홍길동", 100);
    }
}
  1. method2에서 method1을 호출
  2. method1 실행
  • p1 == "홍길동", p2 = 100

🐾 리턴값이 있는 메소드를 호출하고 리턴값을 받고 싶은 경우

타입 변수 = 메소드(매개값)

public class ClassName {
	void method1(int x, int y) {
    	int result = x + y;
        return result;
    }
    
    void method2() {
    	int result1 = nethod1(10, 20);    // result1에는 30 저장
        double result2 = nethod1(10, 20); // result2에는 30.0 저장
    }
}

객체 외부에서 호출

  • 클래스 외부에서 다른 메소드를 호출할 경우 클래스로부터 객체를 생성. 메소드는 객체에 소속된 멤버이므로 객체가 존재하지 앟으면 메소드도 존재하지 않기 때문
    클래스 참조변수 = new 클래스(매개값);

  • 객체가 생성되면 참조 변수와 함께 도트(.) 연산자를 사용해서 메소드를 호출

🐾 리턴값이 없거나, 있어도 리턴값을 받지 않을 경우

참조변수.메소드(매개값);
Car myCar = new Car(); // Car 객체 생성
myCar.key TrunOn(); // Car 객체의 메소드 호출 리턴값이 없음

🐾 리턴값이 있고, 리턴값을 받고 싶을 경우

타입 변수 = 참조변수.메소드(매개값);
int speed = myCar.getSpeed(); // Car 객체의 메소드 호출, 리턴값이 있고 변수 speed에 저장

🐾 ex) 클래스 외부에서 메소드 호출

public class Car {
	// 필드
    int speed;
    
    // 메소드
    int getSpdde() {
    	return speed;
    }
    
    void keyTrunOn() {
    	System.out.println("키를 돌린다.");
    }
    
    void run() {
    	for (int i = 0; i <= 10; i++) {
        	speed = i;
            System.out.println("달립니다. (시속: " + speed + "km/ㅗ)");
        }
    }
}

//
public class CarEx {
	public static void main(Sting[] args) {
    	Car myCar = new Car();
        
        myCar.keyTurnOn();
        myCar.run();
        int speed = myCar.getSpeed();
        System.out.println("현재 속도" + speed + "km/h");
    }
}
profile
열쩡

0개의 댓글