본문 바로가기
IT/JAVA

[Java]추상클래스2- 객체생성방법

by 행복한 용용이 2020. 7. 29.
반응형

5. 객체 생성 방법

     1. 하위클래스 참조

     2. 자기 객체를 return하는 static method 이용.

 

 

     import java.util.*;

    

     public class AbstractTest1 {

          public static void main(String[] args) {

               //1.하위 클래스 참조

               //Calendar cal = new Calendar();  //abstract여서 생성자 new로 못만듦.

               //따라서 하위클래스 있나 봐야함. GregorianCalendar 있음.

               //Calendar cal = new GregorianCalendar();

 

 

               //2.자기 객체를 retrun하는 static method 이용.

               Calendar cal = Calendar.getInstance();

 

 

               int y = cal.get(Calendar.YEAR);

               int m = cal.get(Calendar.MONTH)+1;

               int d = cal.get(Calendar.DATE);

               int am = cal.get(Calendar.AM_PM);

               int h = cal.get(Calendar.HOUR);

               int mi = cal.get(Calendar.MINUTE);

               int s = cal.get(Calendar.SECOND);

               System.out.println(y+"년 "+m+"월 "+d+"일 "+am+h+"시 "+mi+"분 "+s+"초");

               //2월로 뜬다. java의 인덱스는 0부터 시작하기 때문.

 

          }

     }

     3. 외부클래스 참조

 

          public class AbstractTest2 {

               public static void main(String[] args) throws Exception{

 

 

                    //3. 외부클래스 참조.

                    //java.lang에 Process 들어가면 abstract class임으로 new 안됨.

                    //하위 클래스 있나 봤더니 없음.

                    //자신의 객체를 return하는 static method도 없음

                    //외부 클래스 Runtime 들어가면 private이어서 하위 클래스 X, static method 인 2번 쓸 수 있음.

 

                    Runtime r = Runtime.getRuntime();

                    Process p = r.exec("calc");

                    System.out.println("");

               }

          }

 

     4. 자신의 생성자 이용

          import java.awt.*;

          import java.awt.event.*;

 

 

          public class AbstractTest3 extends Frame{

 

               Button b = new Button("@눌러봐@");

 

 

               public AbstractTest3() {

                    super("Is A Test!!!");

                    setLayout(new FlowLayout());

                    add(b);

                    setSize(400,300);

                    setLocation(300,200);

                    setVisible(true);

 

                    //4.자신의 생성자를 이용

                    //WindowAdapter를 자기 자신 생성자 이용하고싶다.

                    //하지만 추상클래스는 자신의 생성자 이용해 객체 생성 불가능.

                    //new 하고 싶다면 모든 method를 override 해야함 > 말이 안됨.

                    //WindowAdapter 는 추상클래스인데 method를 봤더니 추상메소드 X

                    //의미상의 abstract class : 추상클래스인데 실제 추상메소드가 없는 것

                    //그 class의 method 중 아무거나 하나이상만 override 하면 됨.

                    //**1회성 method임.>>동적으로 객체를 구현한다!

 

                    WindowAdapter wl = new WindowAdapter() {

                         public void windowClosing(WindowEvent e){

                              System.exit(0);

                         }

                    };

                    addWindowListener(wl);

 

          }

 

 

          public static void main(String[] args) throws Exception{

               AbstractTest3 iat = new AbstractTest3();

          }

 

     }

 

[출처] 빡쏘끼룩

반응형