ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 step4 - Method(2)
    Java 2022. 10. 25. 21:09

     

    MyObject class 생성

    package test.mypac;
    /*
     * 	[ 메소드를 만들때 고려해야 하는것 ]
     * 	
     * 	1. 접근 지정자
     * 	2. static or non static
     * 	3. 리턴 type
     * 	4. 메소드명
     * 	5. 메소드에 전달하는 인자의 갯수와 데이터 type
     */
    public class MyObject {
    	/*
    	 * 	public => 이 메소드는 어디에서든 접근 가능하다
    	 * 	void => 이 메소드는 어떤 값도 리턴하지 않는다
    	 * 	walk => 메소드명
    	 * 	walk() => 이 메소드는 어떤 값도 인자로 전달받지 않는다
    	 */
    	public void walk() {
    		System.out.println("걸음을 걸어요");
    	}
    	// int type을 리턴해주는 메소드
    	public int getNumber() {
    		return 10;
    	}
    	// String type을 리턴해주는 메소드
    	public String getGreeting() {
    		return "안녕하세요";
    	}
    	//Car type 을 리턴해주는 메소드
    	public Car getCar() {
    		return new Car();
    	}
    	//int type 을 메소드의 인자로 전달 받는 메소드
    	public void setNum(int num) {
    		System.out.println("num:"+num);
    	}
    	//String type 을 메소드의 인자로 전달 받는 메소드
    	public void setName(String name) {
    		System.out.println("name:"+name);
    	}
    	//Radio type 을 메소드의 인자로 전달 받는 메소드
    	public void useRadio(Radio r) {
    		r.listenMusic();
    	}
    	// Gun type 과 Arrow type 을 메소드의 인자로 전달 받는 메소드
    	public void attack(Gun g,Arrow a) {
    		System.out.println("총과 활로 공격을 해요");
    	}
    }

     

    Radio class 생성

    package test.mypac;
    
    public class Radio {
    	public void listenMusic() {
    		System.out.println("음악을 들어요");
    	}
    }

     

    package test.main;
    
    import test.mypac.Arrow;
    import test.mypac.Gun;
    import test.mypac.MyObject;
    import test.mypac.Radio;
    
    public class MainClass04 {
    	public static void main(String[] args) {
    		MyObject obj=new MyObject();
    		obj.setNum(0);
    		obj.setName("KIM");
    		
    		
    		//useRadio() 메소드도 호출해보세요.
    		Radio r= new Radio();
    		
    		//메소드의 인자로 전달할 값이 이미 준비되어 있을수도 있다.
    		obj.useRadio(new Radio());
    		//이미 준비되어 있다면 메소드를 호출하면서 준비된 값을 참조해서 전달하면 된다.
    		obj.useRadio(r);
    		
    		
    		//Radio 패키지에서 직접 가져온 경우
    		r.listenMusic();
    		
    		//attack() 메소드를 출력해보세요
    		Gun a=new Gun();
    		Arrow b=new Arrow();
    		obj.attack(a, b);
    	}
    }
    
    <console>
    num:0
    name:KIM
    음악을 들어요
    음악을 들어요
    음악을 들어요
    총과 활로 공격을 해요

    MyObject class를 상속받아 객체를 생성하였다. setNum과 setName 메소드는 인자값이 있으므로 매개변수로서 값을 여기서 넣어줄 수 있다.

     

    Radio class를 상속받아 객체를 생성하였다.  MyObject class의 useRadio메소드를 호출하지만 인자값으로 Radio class가 필요하므로 넣어줄 인자값으로 Radio 객체가 필요하기에 객체를 생성하여 넣어주었다.

    물론 직접 Radio 객체에서 메소드를 호출할 수도 있다.

     

    Arrow class 생성

    package test.mypac;
    
    public class Arrow {
    
    }

     

    Gun class 생성

    package test.mypac;
    
    public class Gun {
    
    }

     

    두 개의 class에는 아무것도 적혀있지 않지만,  obj 객체의 attack메소드에 Gun, Arrow class가 인자값으로 필요하므로 class를 생성하여 넣어주었다.

     

     

    Messenger class 생성

    package test.mypac;
    
    public class Messenger {
    	//String type 을 인자로 전달받는 static 메소드
    	public static void sendMessage(String msg) {
    		System.out.println(msg+" 를 전송합니다.");
    	}
    	//String type 을 리턴해주는 static 메소드
    	public static String getMessage() {
    		return "hello";
    	}
    	public static void useRadio(Radio r) {
    		r.listenMusic();
    	}
    }

     

    package test.main;
    
    import test.mypac.Messenger;
    import test.mypac.Radio;
    
    public class MainClass05 {
    	public static void main(String[] args) {
    		//Messenger 클래스의 sendMessge(),getMessage(),useRadio() 메소드를 호출해 보세요.
    		Messenger.sendMessage("msg");
    		String a=Messenger.getMessage();
    		Messenger.useRadio(new Radio());
    	}
    }
    
    <console>
    msg 를 전송합니다.
    음악을 들어요

    Messenger class는 static으로 작성하였기에 객체를 생성하지 않아도 메소드를 호출할 수 있다.

    void로 작성하지 않았기 때문에 return값을 받을 수 있다. void로 작성하면 return값을 받을 수 없다.

    위와 마찮가지로 useRadio메소드를 호출하기 위해서는 인자값으로 Radio 객체를 생성해야 되기때문에 생성하여 바로 인자값으로 넘겨주었다. 변수명을 지어서 생성하지 않은 이유는 넘기고 나서 앞으로는 사용할 필요가 없기 때문에 일부러 변수명으로 객체를 생성하지 않았다. 즉 일회용이다.

     

     

     

     

    댓글

Designed by Tistory.