본문 바로가기
뒷북 정리 (국비 교육)/java

[Java] step05. Method

by 규글 2022. 4. 13.

step05. Method

- 01

/*
 *  [ method를 만들때 고려해야 하는것 ]
 *  
 *  1. 접근 지정자
 *  2. return type
 *  3. method name
 *  4. method에 전달하는 인자의 개수와 data type 
 */
public class MyObject {
	/*
	 *  public => 이 method는 어디에서든 접근 가능하다
	 *  void => 이 method는 어떤 값도 return하지 않는다.
	 *  walk => method name
	 *  walk() => 이 method는 어떤값도 전달 받지 않느다.
	 */
	public void walk() {
		System.out.println("걸음을 걸어요~");
	}

 method를 만들 때 고려해야 하는 것은 접근 지정자, return type, method name, method에 전달되는 인자의 개수와 그 data type이다.

 

	// Car type  을 리턴해주는 메소드
	public Car getCar() {
		Car c1=new Car();
		return c1;
	}

 모든 객체를 new로 만드는 것은 아니다. class에 있는 method가 return해주는 객체를 사용할 때도 있다. 예시의 Car type 객체를 만들고자 한다면 new를 통해 만들어주나, method를 통해 만들어진 return값을 사용할 수도 있다. 만약에 헷갈린다면 대입 연산자로 바꿔서 생각해봐도 좋다.

 아래는 method를 만드는 다양한 예시를 나열하였다.

 

	// int type 을 method의 인자로 전달 받는 method 
	public void setNum(int num) {
		System.out.println("num:"+num);
	}
	// String type 을 method의 인자로 전달 받는 method 
	public void setName(String name) {
		System.out.println("name:"+name);
	}
	// Car type 을 method의 인자로 전달 받는 method
	public void useCar(Car car) {
		car.drive();
	}
	// String type 과 Car type 을 method의 인자로 전달받는 method
	public void useSome(String name, Car car) {
		System.out.println("name:"+name);
		car.drive();
	}
	// Radio type 과 Speaker type 을 전달 받는 method
	public void doSome(Radio r, Speaker s) {
		System.out.println("doSome()  메소드가 호출되었습니다.");
	}

 

- 02

public class MainClass02 {
	public static void main(String[] args) {
		MyObject obj1=new MyObject();
		// getCar() 메소드가 return해주는 참조값을 지역변수에 담아보기 
		Car a=obj1.getCar();
		Car b=obj1.getCar();
		Car c=obj1.getCar();
		
		// 지역변수에 담긴 객체 사용하기
		a.drive();
		b.drive();
		c.drive();
	}
}

 이 class로 인해 heap 영역에 만들어지는 object는 총 네 개이다. 가장 먼저 보이는 Car 객체 세 개가 있다. 그리고 main method에 들어가는 String까지 해서 네 개이다.

 

- 03

		MyObject obj1=new MyObject();
		// .setNum(), .setName(), .useCar() method를 호출해 보세요. 
		obj1.setNum(10);
		obj1.setName("xxx");
		obj1.useCar(new Car());
		
		int a=20;
		String b="김구라";
		Car c=new Car();
		// 지역변수에 담긴 값을 이용해서 method 호출하면서 전달할 수도 있다. 
		obj1.setNum(a);
		obj1.setName(b);
		obj1.useCar(c);

 앞선 - 01의 class에 있는 method를 이용하는 예시이다.

 

- 04

 eclipse의 debugging 기능을 사용하다가 보면 표기한 'step into' 를 사용할 수 있다. 어떤 class의 method를 사용하기 위해서는 해당 class 객체의 참조값을 쓰게되는데 이때 method 위치에서 step into를 사용하면 해당 method를 추적해서 간다. 이때 local value는 만들어졌다가 사라지고, this는 해당 method가 있는 객체의 id를 받아온다.

 

 main method도 마찬가지이다. main method는 도입점이다. 시작하고 new를 통해 heap 영역에 해당 객체를 만들게 되고, 해당 객체의 참조값을 이용해서 method를 사용하게 되는 것이다. 만약에 return 값이 있을 경우는 해당 자리에 특정 return 값이 대체될 것이다.

 

- 05

 직접 실습해보는 경우였는데, 내용이 크게 다르지 않으니 작성하지 않는다.

 

- 06

 java에서는 접근 범위를 제한할 수 있다. 그 역할을 하는 것이 method를 만들 때 첫 번째로 고려했던 접근지정자이다. 계속해서 예시에 봐왔던 public이 그것이다. 이 public 자리에 올 수 있는 것이 다음의 네 가지이다.

  1. public
  2. x
  3. protected
  4. private

 첫 번째 public은 공용이다. 제한 없이 어디서든 사용할 수 있는 친구가 된다. 두 번째는 아예 적지 않는 것이다. 적지 않는 것은 default가 접근 지정자라고 했다. 세 번째 protected는 뭔가 보호를 받는다고 했고, 네 번째 private는 비공개라고 했다. 일단은 public과 private 정도만 기억하면 된다고 했다.

'뒷북 정리 (국비 교육) > java' 카테고리의 다른 글

[Java] step07. Wrapper Class  (0) 2022.04.17
[Java] step06. Constructor  (0) 2022.04.17
[Java] step04. Class  (0) 2022.04.13
[Java] step03. Operator  (0) 2022.04.11
[Java] step02. Data type  (0) 2022.04.11

댓글