-
자바 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() 메소드를 사용하면 된다.
'Java' 카테고리의 다른 글
자바 step4 - Method(2) (0) 2022.10.25 자바 step4 - Method(1) (0) 2022.10.25 자바 step3 - Class(객체생성) 상속(1) (0) 2022.10.24 자바 step2 - Operator(연산자, 3항 연산자) (0) 2022.10.24 자바 step1 - 기본 8가지 타입(문자형(string), ) (0) 2022.10.24