728x90

package

AA.java
-------------------------------
package pp.gg;

public class AA
{
 public void aa()
 {
  System.out.println("AAA");
 }
}
-------------------------------
BB.java
-------------------------------

package pp.gg;

public class BB
{
 public void bb()
 {
  System.out.println("BBB");
 }
}
-------------------------------
CC.java
-------------------------------

package pp.gg;

public class CC
{
 public void cc()
 {
  System.out.println("CCC");
 }
}
-------------------------------
DD.java
-------------------------------

package pp.gg;

public class DD
{
 public static void main(String args[])
 {
  AA A = new AA();
  BB B = new BB();
  CC C = new CC();
  
  A.aa();
  B.bb();
  C.cc();
 }
}
-------------------------------
컴파일 :   javac -d . *.java

실행   :  java pp.gg.DD 


jar 파일 만들어서 사용하기

c:\bb\aa에 작업

-------------------------------
Test1.java
-------------------------------
package hong.co.kr;

public class Test1

 public Test1(){}
 
 public void hab(int a, int b)
 {
  System.out.println("합 : "+(a+b));
 }
}


-------------------------------
Test2.java
-------------------------------
package hong.co.kr;

public class Test2
{
 public Test2(){}
 
 public void cha(int a, int b)
 {
  System.out.println("차 :" + (a-b));
 }
}
-------------------------------

jar 파일 생성   //jar파일은 클래스를 묶어서 압축시켜놓은 것. 

C:\bb\aa>javac -d . *.java

C:\bb\aa>jar -cvf hong.jar hong    //  hong폴더를 압축한다.... 압축프로그램으로도 풀린다..
추가된 manifest
추가 중: hong/(내부 = 0) (외부= 0)(0%가 저장되었습니다.)
추가 중: hong/co/(내부 = 0) (외부= 0)(0%가 저장되었습니다.)
추가 중: hong/co/kr/(내부 = 0) (외부= 0)(0%가 저장되었습니다.)
추가 중: hong/co/kr/Test1.class(내부 = 608) (외부= 376)(38%가 감소되었습니다.)
추가 중: hong/co/kr/Test2.class(내부 = 606) (외부= 375)(38%가 감소되었습니다.)

C:\bb\aa 에  hong.jar 파일이 생성된다.

jar 파일 사용

C:\Program Files\Java\jdk1.5.0_09\jre\lib\ext 에다가 복사한다.
-------------------------------
PackageTest.java
-------------------------------
import hong.co.kr.*;

class PackageTest
{
 //변수(필드)선언
 Test1 t1;
 Test2 t2;
 
 public PackageTest()
 {
  t1 = new Test1();
  t2 = new Test2();
  
  t1.hab(30,10);
  t2.cha(30,20);
 }
 
 public static void main(String args[])
  {
   new PackageTest();

  }
}
-------------------------------

awt
 - awt(Abstract Window Toolkit)패키지는 여러 컴퓨터 플랫폼(platform)에서 공통적으로 사용할 수 있는 
   GUI(Graphics User Interface)컴포넌트를 제공한다.
 - 이벤트를 처리하려면   
     1. 상속을 받는다(인터페이스나 클래스를)
     2. 이벤트 등록을 한다 (addWindowListener(this))
     3. 그에 해당하는 메서드를 오버라이딩 해야 한다.  

형식

  class Test extends Frame implements WindowListner  //1번 상속을 받는다
{
   필드
   생성자()
  {
     객체생성 Button Label
     addWindowListener(this); // 2번 이벤트 등록
  }
    public void windowClosing(WindowEvent w)// 3번 메서드를 오버라이딩 한다.
      {
         내용
      }
}

add()메서드  : 컴포넌트를 컨테이너에 등록(붙이기)

원형   public Component add (Component comp)

ex>  컨테이너.add(컴포넌트)
        f.add(bu);
  add메서드는  자바 api 에서 Frame ->  method  ->  java.awt.Container에서 제공한다.

창크기 메서드
   1. setSize(width, height) : 창 크기
   2. setBounds(x,y,width, height) : 창 위치와 크기
   3. pack();   // 창 기본 크기( 컴포넌트를 고려하여 크기가 정해짐

창표시 메서드
   1. show() : 사용하지 마세요 1.5 버전부터는 경고나옴.
   2. setVisible(true/ false)
 
   dispose()   //리소스 반환
   System.exit(0)  // 창 종료(프로그램 종료)
  - 참고
  System.exit(int status) 를 실행하게 되면 Runtime.exit()를 호출하여 프로세스를 종료하게 된다
  System.exit(0)  는 정상 종료
  System.exit(1)  는 비정상 종료 (거의 사용 안함)
  예를 들어 예외 처리할때 catch 절에 에러문구 발생후 System.exit(1);이라고 해놓으면
  아래와 같은 형태로 구분하기 좋다.
  그렇다고 해서 System.exit(0) 으로 쓰면 안되는것은 아니다.
  어떤 에러가 발행한 경우 Syste.exit(1); 으로 종료시키면 이 프로그램이을 종료 시킨 다음 다른
  프로그램에서 실행 결과를 알 수 있을 것이다.

예제 (창닫기)
-----------------------------------------------------------------------------------------
//인터페이스 상속, 모든 메서드 오버라이딩 해야 한다.
import java.awt.*;
import java.awt.event.*;

class WindowTest_1 extends Frame implements WindowListener
{
 public WindowTest_1()//생성자
 {
  super("창 닫기");
  addWindowListener(this);//이벤트등록
  setBounds(200,200,300,300);
  setVisible(true);//창표시
 }
 //오버라이딩
 public void windowClosing(WindowEvent w)
 {
  System.exit(0);
 }
 public void windowClosed(WindowEvent w){}
 public void windowOpened(WindowEvent w){}
 public void windowIconified(WindowEvent w){}
 public void windowDeiconified(WindowEvent w){}
 public void windowActivated(WindowEvent w){}
 public void windowDeactivated(WindowEvent w){}
 
 public static void main(String args[])
 {
  new WindowTest_1();
 }

}
-----------------------------------------------------------------------------------------
예제 (창닫기) WindowAdapater 클래스 상속
                   inner 클래스 사용
-----------------------------------------------------------------------------------------

import java.awt.*;
import java.awt.event.*;

class WindowTest2 extends Frame
{
 public WindowTest2()
 {
  super("창닫기 inner class");
  addWindowListener(new MyWin()); // 이벤트 등록
  setBounds(200,200,300,300);
  setVisible(true);
 }
 // inner class
 class MyWin extends WindowAdapter
 {
  public void windowClosing(WindowEvent w) //여기서 오타나면 실행할때 에러남
  {
   dispose();
   System.exit(0);
  }
 }
 //inner class end
 
 
 public static void main(String args[])
 {
  new WindowTest2();
 }
}


-----------------------------------------------------------------------------------------
예제 (창닫기)  무명 inner class 사용
-----------------------------------------------------------------------------------------

import java.awt.*;
import java.awt.event.*;

class WindowTest3 extends Frame
{
 public WindowTest3()
 {
  super("창닫기 무명 inner 클래스");
  setBounds(200,200,300,300);
  setVisible(true);
  
  addWindowListener(new WindowAdapter()
   {// 무명 inner class
    public void windowClosing(WindowEvent w)
    {
     System.exit(0);
    }
   });
 }//생성자
  public static void main(String args[])
  {
   new WindowTest3();
  }
}

-----------------------------------------------------------------------------------------
예제  (마우스 이벤트 처리)
-----------------------------------------------------------------------------------------
/*
인터페이스 상속, 다중 상속
마우스 - 이벤트 처리
 */

import java.awt.*;
import java.awt.event.*;
class MouseTest_1 extends Frame implements MouseListener, MouseMotionListener
{
 // Field 선언
 private int xpos,ypos;
 private String msg;
 public MouseTest_1()
 {
  super("마우스1");
  setBounds(200,200,300,300);
  setVisible(true);
  
  addWindowListener(new MyWin());//이벤트 등록
  addMouseListener(this);
  addMouseMotionListener(this);
 } 
 
 class MyWin extends WindowAdapter
 {
  public void windowClosing(WindowEvent w)
  {
   System.exit(0);
  }
 }
 //사용자 정의 메서드  마우스를 눌렀을때 좌표값 메시지를 표시하기 위해서 만듬
 private void setValues(String msg, int x, int y)
 {
  this.msg = msg;
  this.xpos = x;
  this.ypos = y;
  repaint();
 }
 
 public void paint(Graphics g)// 그리기
 {
  msg = msg + " @ [" + xpos + "," + ypos + "]";
  g.drawString(msg, xpos,ypos);
 }
 // 오버라이딩
 
 public void mousePressed(MouseEvent m)
 {
  setValues("mousePressed",m.getX(),m.getY()); //마우스 좌표값
 }
 public void mouseReleased(MouseEvent m)
 {
  setValues("mouseReleased",m.getX(),m.getY());
 }
 public void mouseClicked(MouseEvent m)
 {
  setValues("mouseClicked",m.getX(),m.getY());
 }
 public void mouseEntered(MouseEvent m)
 {
  System.out.println("마우스가 창 안으로 들어왔음");
 }
 public void mouseExited(MouseEvent m)
 {
  System.out.println("마우스가 창 밖으로 나갔다.");
 }
 public void mouseMoved(MouseEvent m)
 {
  setValues("mouseMoved" ,m.getX(), m.getY());
 }
 public void mouseDragged(MouseEvent m)
 {
  setValues("mouseDragged" ,m.getX(), m.getY());
 }

 public static void main(String args[])
 {
  new MouseTest_1();
 }
}
-----------------------------------------------------------------------------------------
예제  (마우스 이벤트 처리 applet 으로)
-----------------------------------------------------------------------------------------
/*
마우스 이벤트
inner class 예제  applet
*/
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class MouseTest_2 extends java.applet.Applet
{
 public void init()
 {
  setBackground(Color.red);
  addMouseListener(new MyMouse());
 }
 //inner class
 class MyMouse extends MouseAdapter
 {
  public void mousePressed(MouseEvent m)
  {
   setBackground(Color.orange);
   repaint();
  }
  public void mouseReleased(MouseEvent m)
  {
   setBackground(Color.green);
   repaint();
  }
 }

 public void paint(Graphics g)
 {
  g.drawString("Hello MouseTest_2!", 50, 50);
 }
}

-----------------------------------------------------------------------------------------
예제  (마우스로 그림그리기)
-----------------------------------------------------------------------------------------

import java.awt.*;
import java.awt.event.*;

class MouseTest_4 extends Frame implements MouseMotionListener
{
 //Field
 Point point = new Point();
 
 //생성자
 public MouseTest_4()
 {
  super("마우스4");
  setFont(new Font("Dialog",Font.BOLD,35)); //Font 설정
  setForeground(Color.blue); //글꼴색
  addWindowListener(new MyWin());
  setBounds(200,200,700,700);
  setVisible(true);
  addWindowListener(new MyWin());
  addMouseMotionListener(this);
 }
 //inner class

 class MyWin extends WindowAdapter
 {
  public void windowClosing(WindowEvent w)
  {
   System.exit(0);
  }
 }
 
 public void update(Graphics g)
 {
  paint(g);
 }

 public void paint(Graphics g)
 {
  //g.drawString("지금은 8교시 수업중 입니다", point.x, point.y);
  g.drawOval(point.x, point.y,10,10);
 }
 public void mouseMoved(MouseEvent m)
 {
  
 }
 public void mouseDragged(MouseEvent m)
 {
  point = m.getPoint();
  repaint(); 
 }

 
 //main
 public static void main(String args[])
 {
  new MouseTest_4();
 }
 
}//class

728x90

상위 클래스 변수로 하위 객체 처리 할 수 있다.
------------------------------------------------------------------------
예제 1
------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;

class Extends_5 extends Frame
{
 public Extends_5()
 {
  super("연습");
  addWindowListener(new MyWin()); //이벤트 등록
 }
 
 //inner  클래스---------------------------------
 class MyWin extends WindowAdapter
 {
  public void windowClosing(WindowEvent w) // WindowAdpater를 상속해서 오버라이딩
  {
   System.exit(0);// 프로그램 종료
  }
 }
 //inner  클래스----------------------------------
 
 public static void main(String args[])
 {
  Frame f = new Extends_5();  // 상위 클래스 변수로 하위 객체 처리 가능
  f.setBounds(200,200,300,300);//창 위치, 크기
  f.setVisible(true);
  
 }//main
}// Extends_5

------------------------------------------------------------------------
예제 2
------------------------------------------------------------------------

class PanMae
{
 protected String pum;
 protected int su;
 protected int dan;
 
 public PanMae(String p, int s, int d)
 {
  pum = p;
  su = s;
  dan = d;
 }
 public void disp()
 {
  System.out.println(pum + "   "+ su +"   "+ dan);
 }
}

class SalePanmae extends PanMae
{
 private double rate; //할인율
 public SalePanmae(String pum, int su, int dan, double rate)
 {
  super(pum,su,dan);
  this.rate = rate;
 }
 //Overriding
 public void disp()
 {
  System.out.println(pum + "    " + su + "   " + dan + "   " + (int)(dan*(1-rate)));
 }
}
class Extends_6
{
 public static void main(String args[])
 {
  PanMae p[] = new PanMae[4];
  
  p[0] = new PanMae("사과",3,200);
  p[1] = new SalePanmae("수박",5,10000, 0.02);
  p[2] = new PanMae("it's",7,1000);
  p[3] = new SalePanmae("새우깡",10,700,0.03);

  
  for(int i = 0; i<4; i++)
  {
   p[i].disp();
  }  
 }
}
------------------------------------------------------------------------

클래스 형변환(casting)
------------------------------------------------------------------------
예제 1
------------------------------------------------------------------------
 /*
상위 클래스 변수로 하위 객체 처리
클래스 캐스팅
 */


class PanMaeSuper
{
 protected String pum;
 protected int su;
 protected int dan;
 
 //public PanMaeSuper(){}
 
 public PanMaeSuper(String p, int s, int d)
 {
  pum = p;
  su = s;
  dan = d;
 }
 public void disp()
 {
  System.out.println(pum + "  " + su + "  " + dan);
 }
}

class SalePane extends PanMaeSuper
{
 private double rate;
 
 //public SalePane(){}

 
 public SalePane(String pum, int su, int dan, double rate)// constructor
 {
  super(pum,su,dan);
  this.rate = rate;
 }
 public void disp()  // Overriding
 {
  System.out.println(pum + "  " + su + "  " + dan + "  " + dan*(1-rate));
 }
 public void halinAk()
 {
  System.out.println("할인액 : " + dan*rate);
 }
}
class CastingTest_2
{
 public static void main(String args[])
 {
  PanMaeSuper p[]= new PanMaeSuper[4];
  
  p[0] = new PanMaeSuper("감자깡",10,700);
  p[1] = new SalePane("새우깡",12,700,0.02);
  p[2] = new PanMaeSuper("It's",3,1000);
  p[3] = new SalePane("틴틴",5,1000,0.03);
  
  //p[1],[3]의 자료형이 PanMaeSuper 이므로 SalePane 생성자를 PanMaeSuper에서  찾는다.
  //그러므로 오류메시지가 can not find symbol

  
  for(int i = 0 ; i<p.length ; i++)
  {
   p[i].disp();
   
   if(p[i] instanceof SalePane)  //   SalePane클래스 객체 일때 캐스팅
   {
    ((SalePane)p[i]).halinAk();
   }
  }
 }
}
------------------------------------------------------------------------

인터페이스와 추상클래스

 인터페이스

  - 인터페이스는 추상클래스의 일종이다.
  - 추상클래스는 일부 내용 있는 메서드를 포함하고 있지만, 인터페이스는 모든 메서드가 추상이다.
  - 인터페이스의 메서드는 항상 public 이다, 접근 제한자를 생략하더라도 public 이다. 
  - 인터페이스의 필드는 항상 final static 으로 상수만이 허용된다.
  - 추상클래스는 추상메서드가 하나 이상 존재해야 한다.
  - 추상클래스는 일반 메서드와 추상메서드가 함께 있는 경우
  - 생성자, static 메서드, private 메서드, 는 추상화 될 수 없다.
      ex) 추상 메서드  
           ->  public void aa();    // 내용이 없고 선언만 되어 있는 것.
  - final 변수 : 변수를 상수화 시킨다( 값 변경 불가능)
  - final 메서드 : 재정의 불가능
  - final 클래스 : 확장(상속)이 불가능
  - final 클래스의 모든 메서드는 final을 명시하지 않아도 묵시적으로 final로 인식한다.
  - 추상클래스는 객체 생성할 수 없다.  왜냐면  호출될 메서드가 구현되지 않은 것일 수 도 있기 때문에(추상 메서드)
 
interface 와 abstract 클래스 비교
---------------------------------------------------------------------------------
                          interface                                  abstrict
-------------------------------------------------------
 키워드                  interface                                           abstrict
---------------------------------------------------------------------------------
 메서드        public 리턴형 메서드명();         일반메서드 : public 리턴형 메서드명(){내용}
                                                                  추상메서드 : public 리턴형 메서드명()
---------------------------------------------------------------------------------
다중상속                   가능                                                  불가
---------------------------------------------------------------------------------
   변수                  final static                           프로그래머 마음대로 사용가능
                         (상수형 변수)      
----------------------------------------------------------------------------------

인터페이스 정의 형식
---------------------
  interface 인터페이스명
   {
         final static 변수
         추상메서드();
    }
---------------------

  - interface를 클래스에서 상속받아, 메서드 재정의(Overriding)를 한다. 

------------------------------------------
  class 클래스명 implements  인터페이스명
     {
          재정의(Overridnig)
     }
------------------------------------------
 상수형 변수는 대문자로 쓴다.  
  ex) MAX_VALUE

------------------------------------------------------------------------
예제 1
------------------------------------------------------------------------
interface AA
{
 int a = 100;// final static
 int aa();// 추상 메서드
}// 인터페이스
interface BB
{
 double b = 300.0; // final static
 double bb();// 추상 메서드
}
interface CC extends AA, BB
{
 boolean cc();  // abstruct method
}
class DD implements CC
{
 //인터페이스 메서드는 모두 오버라이딩 해야함.
 // 왜?  모두가 추상 메서드라서

 public int aa()
 {
  return 1000;
 }
 public double bb()
 {
  return 200.7;
 }
 public boolean cc()
 {
  return true;
 }
}
class InterfaceTest_1
{
 public static void main(String args[])
 {
  DD D = new DD();
  System.out.println(D.a);
  System.out.println(D.b);
  
  System.out.println(D.aa());
  System.out.println(D.bb());
  System.out.println(D.cc());
 }// main

}// InterfaceTest_1

------------------------------------------------------------------------
예제 2
------------------------------------------------------------------------
/*
인터페이스 예제
 */
interface AA2
{
 int aa();
}

class BB2 implements AA2
{
 public int aa() //Overriding
 {
  return 100;
 }
}

class CC2 implements AA2
{
 public int aa()// Overriding
 {
  return 200;
 }
}

class InterfaceTest_2
{
 public static void main(String args[])
 {
  System.out.println(new BB2().aa());//객체 생성하고 바로 메서드 호출
  System.out.println(new CC2().aa());
 }
}

------------------------------------------------------------------------
예제 3
------------------------------------------------------------------------
/*
인터페이스 예제
 */

interface AA3
{
 int a = 100;
 int aa();
}
interface BB3 extends AA3
{
 double b = 345.7;
 double bb();
}
interface CC3 extends BB3
{
 char ch = 'A';
 char cc();
}
class InterfaceTest_3 implements CC3
{
 // Overriding
  public int aa() { return 1000;}
  public double bb() {return 200.9;}
  public char cc() { return 'B';}
  
 public static void main(String args[]) 
 {
  
  CC3 C = new InterfaceTest_3();  //상위 클래스 변수로 하위 객체 처리
  
  if(C instanceof AA3)
  {
   System.out.println(C.a);
   System.out.println(C.b);
   System.out.println(C.ch);
   
   System.out.println(C.aa());
  }
 }
}
 추상클래스

------------------------------------------------------------------------
예제 1
------------------------------------------------------------------------

abstract class Abs
{
 abstract int aa();
 public void disp()
 {
  System.out.println("추상 클래스 내의 일반 매서드");
 }
}
class BB extends Abs
{
 public int aa()// Overriding
 {
  return 100;
 }
}

class CC extends Abs
{
 public int aa()
 {
  return 200;
 }
}

class AbstractTest_1
{
 public static void main(String args[])
 {
  System.out.println(new BB().aa());
  System.out.println(new CC().aa());
  
  new BB().disp();
  new CC().disp();
 }
}
------------------------------------------------------------------------
예제 2
------------------------------------------------------------------------

abstract class Abs2
{
 String name;
 public Abs2(String na)
 {
  name =na;
 }
 abstract public void disp();// 추상 메서드..
 // 인터페이스 안에 있는 메서드는 모두 추상 메서드라 메서드 앞에 abstract 안 붙여도 됨
 
 public void kk()
 {
  System.out.println("추상 클래스 내의 일반 메소드");
 }
}

class AbstractTest_2 extends Abs2
{
 public  AbstractTest_2(String na)
 {
  super(na);
 }
 // Overriding
 public void disp()
 {
  System.out.println("추상 메서드 오버라이딩");
  System.out.println("Name:" + name);
 }
 public static void main(String args[])
 {
  AbstractTest_2 A = new AbstractTest_2("길동");
  A.disp();
  A.kk();
 }
}

------------------------------------------------------------------------

패키지(package)

 -
기능이 유사한 class나 interface를 모아 놓은것.
 - class 이름상 충돌을 방지 시켜준다. 
 -  패키지는 여러 클래스, 인터페이스의 집합체로서 package문으로 선언한다. 
 -  패키지 이름은 소문자  

------------------------------------------------------------------------
예제 (패키지 만들기)
------------------------------------------------------------------------
Product.java

package prod;

public class Product    //클래스 public선언 안그러면  ProductTest 클래스에서 접근 못함..
{
 double displacement = 1000.0;
 int price = 1500;
 
 public void disp()
 {
  String str = "자동차 정보 입니다 ";
  System.out.println(str);
  System.out.println("배기량 :"+displacement+ "cc");
  System.out.println("가격  :"+price);
 }
}
------------------------------------------------------------------------
저장하고

 - 도스창에서  javac -d *.java       //-d  자동패키지 만드는 명령
    그러면 해당 폴더에 prod 폴더가 생성되고 그 곳에 Product.class 파일이 생긴다.
------------------------------------------------------------------------
ProductTest.java

import prod.Product;

class ProductTest
{
 public static void main(String args[])
 {
  Product A = new Product();
  A.disp();
 }
}
------------------------------------------------------------------------
실행결과 :  자동차 정보 입니다
                배기량 :1000.0cc
                가격  :1500




------------------------------------------------------------------------
예제2
------------------------------------------------------------------------
Product2.java
package cc.dd;

public class Product2
{
 public void disp()
 {
  System.out.println("product2 하하");
 }
}
------------------------------------------------------------------------
javac -d . Product2.java
 그러면 해당 폴더에 cc 폴더가 생성되고  cc폴더 안에 dd 폴더 생성  dd폴더에  Product.class 파일이 생긴다.
------------------------------------------------------------------------
ProductTest_2.java

import cc.dd.Product2;

class ProductTest_2
{
 public static void main(String args[])
 {
  Product2 A = new Product2();
  A.disp();
 }
}
------------------------------------------------------------------------
실행결과 : product2 하하



------------------------------------------------------------------------
예제3 (protected)
------------------------------------------------------------------------
PanMae.java
package cc.dd.panmae;

public class PanMae
{
 //필드
 protected String pum;   //protected
 protected int su;
 protected int dan;
 
 public PanMae(String p, int s, int d)
 {
  pum = p;
  su = s;
  dan = d;
 }
 
 public void disp()
 {
  System.out.println(pum+"~~"+dan);
 }
}
------------------------------------------------------------------------
javac -d . PanMae.java
  cc\dd\panmae 폴더에  PanMae.class 파일 확인
------------------------------------------------------------------------
SalePanMae.java

package cc.dd.panmae;

public class SalePanMae extends PanMae
{
 private double rate;
 
 public SalePanMae(String p, int s, int d, double rate)
 {
  super(p,s,d);
  this.rate = rate;
 }
 public void disp()
 {
  System.out.println( pum + "   " + su + "  " + dan + "  " + dan*(1-rate));
  }
}

------------------------------------------------------------------------
javac -d . PanMae.java
  cc\dd\panmae 폴더에  SalePanMae.class 파일 확인
------------------------------------------------------------------------
PanMaeTest.java

import cc.dd.panmae.PanMae;
import cc.dd.panmae.SalePanMae;

class PanMaeTest
{
 public static void main(String args[])
 {
  SalePanMae A = new SalePanMae("새우깡",5,700,0.02);
  A.disp();
 }
}
------------------------------------------------------------------------
실행결과 :  새우깡   5  700  686.0


+ Recent posts