ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 step3 - Class(객체생성) 상속(2)
    Java 2022. 10. 24. 21:54

     

    member class를 생성하였다.

    package test.mypac;
    /*
     *  Member 객체에 회원의 번호, 이름, 주소를 담고 싶다면
     *  클래스를 어떻게 설계를 해야 할까?
     *  
     *  저장소(필드)가 3개 필요하다
     *  필드의 type 은 int, string, string 이 적당할 것 같음
     *  필드에 값은 나중에 new Member() 한 이후에 담을 예정
     *  
     *  public 은 공개라는 의미로 public을 사용하지 않으면 다른 패키지에 적용 불가
     */
    public class member {
    	public int num;
    	public String name;
    	public String addr;
    	
    	//메소드
    	public void showInfo() {
    		//this 는 객체 자신의 참조값을 가리키는 예약어
    		System.out.println("번호:"+this.num+" 이름:"+this.name+" 주소:"+this.addr);
    	}
    }

     

    package test.main;
    
    import test.mypac.member;
    
    public class MainClass03 {
    	public static void main(String[] args) {
    		System.out.println("main 메소드가 시작되었습니다.");
    		// Member 객체를 생성해서 그 참조값을 mem1 이라는 지역변수에 담아보세요.(1줄)
    		member mem1=new member();
    		mem1.num=1;
    		mem1.name="김구라";
    		mem1.addr="노량진";
    		
    		// Member 객체를 생성해서 그 참조값을 mem2 이라는 지역변수에 담고 해골의 정보도 담아보세요
    		member mem2=new member();
    		mem2.num=2;
    		mem2.name="해골";
    		mem2.addr="행신동";
    		
    		// mem1, mem2 에 들어있는 참조값을 이용해서 showInto() 메소드 호출하기
    		mem1.showInfo();
    		mem2.showInfo();
    	}
    }
    
    <console>
    main 메소드가 시작되었습니다.
    번호:1 이름:김구라 주소:노량진
    번호:2 이름:해골 주소:행신동

    member class를 상속받아서 mem1이라는 변수명으로 새로운 객체를 생성하였다.

    member class에 필드에 num, name, addr이 있으므로 상속받아 변수값을 넣어줄 수 있다.

    그 참조값을 가지고 메소드를 호출하면 참조값이 적용된 상태로 호출할 수 있다.

     

     

    MyUtil이라는 객체를 생성하였다.

    package test.mypac;
    
    public class MyUtil {
    	//필드
    	public static String version="1.0";
    	
    	//메소드
    	public static void send() {
    		System.out.println("전송합니다");
    	}
    }

     

    package test.main;
    
    import test.mypac.MyUtil;
    
    public class MainClass04 {
    	public static void main(String[] args) {
    	/*
    	 *  MyUtil 클래스에 있는 send() 메소드를 호출하고 싶다면?
    	 *  
    	 *  static 메소드 이기 때문에 new 하지 않고
    	 *  
    	 *  import 후에 클래스명에 . 을 찍어서 호출할 수 있다.	
    	 */
    		
    	//static 메소드 호출
    	MyUtil.send();
    	//static 필드 참조
    	String v=MyUtil.version;
    	}
    }
    
    <console>
    전송합니다

    MyUtil 객체는 static 메소드를 사용했기때문에 바로 호출할 수 있다. 넣어줄 값이 없기 때문에 새로운 객체를 생성할 필요는 없다. 위의 다른 객체들은 static이 아닌 void를 사용했기 때문에 객체를 생성해야되지만, static으로 class를 만들어 놓으면 새로운 객체를 생성할 필요는 없다.

     

     

    package test.main;
    
    public class MainClass05 {
    	
    	public static int num=999;
    	
    	public static void main(String[] args) {
    		//static 메소드 안에서는 static 자원들만 사용할 수 있다.
    		System.out.println("num:"+MainClass05.num);
    	}
    }
    
    <console>
    num:999

    같은 페이지 이지만 main 메소드 위에 static으로 num이라는 변수를 지정해줬기때문에 같은 페이지에서 .만 찍어 바로 사용할 수 있다.

     

     

    package test.main;
    
    import java.io.PrintStream;
    
    public class MainClass06 {
    	public static void main(String[] args) {
    		/*
    		 *  System 클래스의 out 이라는 static 피드에 담긴 참조값을
    		 *  PrintStream type 지역 변수에 담기
    		 *  지역변수에 담긴 참조값에 . 찍어서 println() 메소드 호출해서 콘솔창에 문자열 출력하기
    		 */
    		PrintStream a=System.out;
    		a.println("hi~");
    		
    	}
    }
    
    <console>
    hi~

    보통 console을 호출할 때 System.out.println()를 사용하는데 이것 또한 System 이라는 class이다.

    너무 자주 사용하기에 굳이 객체를 생성하지 않아도 사용하도록 하였는데 위와 같은 방식으로도 class를 상속 받아서 객체를 생성하여 사용할 수도 있다.

     

     

    package test.main;
    
    import java.util.Random;
    
    public class MainClass07 {
    	public static void main(String[] args) {
    		// Random type 참조값이 담길 수 있는 ran 이라는 이름의 빈 지역변수 만들기
    		Random ran=null;
    		//Random ran=new Random();
    		// Random 객체를 생성해서 그 참조값을 지역변수 ran 에 대입하기
    		ran=new Random();
    		// 참조값에 . 찍어서 nextInt() 메소드를 호출하고 메소드가 리턴해주는 값을 지역변수 ranNum 에 담기
    		int ranNum=ran.nextInt();
    		System.out.println(ranNum);
    	}
    }
    
    <console>
    1000963584

    Random class이다. class 는 무조건 자신이 만드는 것이 아니라 이미 만들어져 있는 내장 class도 매우 많이 존재한다. 그 중에 하나가 Random class이다. 만들지 않아도 ran이라는 변수명에 Random class를 바로 상속받아서 사용할 수 있다.

    Random class는 말 그대로 random한 숫자를 구할 때 자주 사용한다.

     

     

    package test.main;
    
    import java.util.Scanner;
    
    public class MainClass08 {
    	public static void main(String[] args) {
    		// Scanner 객체를 생성해서 scan 이라는 지역변수에 참조값을 담기
    		Scanner scan=new Scanner(System.in);
    		// 콘솔에 입력한 문자열을 읽어와서 변수에 담기
    		String line=scan.nextLine();
    		System.out.println("line:"+line);
    	}
    }
    
    <console>
    하이
    line:하이

    Scanner class 도 내장 class이다. console에 무언가를 입력할 때 사용하는 class이며, 객체를 생성해서 nextLine() 메소드를 사용하면 console창에서 문자열을 입력할 수 있다. 숫자를 입력하려면 nextInt() 메소드를 사용하면 된다.

     

     

     

    댓글

Designed by Tistory.