본문 바로가기

자바

AWT를 이용한 간단한 메모장 작성 package pack.awt; import java.awt.Button;import java.awt.Frame;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.MenuShortcut;import java.awt.Panel;import java.awt.TextArea;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; public class Mem.. 더보기
동기화 synchronized ThreadBankmain.java package pack.thread; public class ThreadBankMain {public static ThreadBank myBank = new ThreadBank(); public static void main(String[] args) {System.out.println("원금 : " + myBank.getMoney());ThreadPark park = new ThreadPark();ThreadParkWife wife = new ThreadParkWife();park.start();wife.start();}}==================================================================================.. 더보기
쓰레드로 만든 시계 package pack.etc; import java.awt.Button;import java.awt.Font;import java.awt.Frame;import java.awt.Label;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.Calendar; public class ThreadClock extends Frame implements ActionListener, Runnable{ private static final long serialVersionUID = 1L;.. 더보기
내부클래스 package pack.inner; public class Outer {int a;Inner inner;public Outer(){System.out.println("Outer 생성자");a = 10;inner = new Inner();}public void aa(){System.out.println("Outer의 aa 메소드");System.out.println("Outer a : " + a);bb();System.out.println("=============");// 외부클래스에서 내부클래스 멤버를 접근할 때 인스턴스를 통해서 접근inner.cc();System.out.println("Inner의 b:" + inner.b);}public void bb(){System.out.println("Oute.. 더보기
인터페이스와 어댑터(추상클래스) 인터페이스를 구현한 클래스는 구현한 인터페이스의 모든 메소드를 오버라이드 해야한다. 그런데 오버라이드 해야할 메소드가 너무 많고 그 많은 메소드를 모두 사용하지 않는 경우 쓸대없이 코드가 길어진다. 이때 어댑터라는 개념을 이용한다. 방법. 인터페이스를 구현한 클래스에 메소드를 모두 오버라이드 시킨다. 그 클래스를 abstract 하여 추상클래스로 만들고 추상클래스를 상속받아서 사용하면 필요한 메소드만 오버라이드 시켜서 사용할 수 있다. 이때 인터페이스를 구현하고 추상클래스로 만들어 놓은 클래스를 어댑터라고 한다. 자바가 만들어 놓은 어댑터 중 하나가 WindowAdapter 추상클래스이다. 이 추상클래스는 WindowListener 인터페이스를 구현한 클래스이다. WindowAdapter 추상클래스를 상.. 더보기
클래스의 포함 관계 예제 (클래스를 필드멤버 처럼 사용) PohamMain package pack.your; public class PohamMain {public static void main(String[] args) {PohamCar kildong = new PohamCar("길동");kildong.turnHandle(30);System.out.println(kildong.ownerName + "의 회전량은 " + kildong.turnShow + kildong.handle.quantity);// kildong.handle.quantity 포함관계로 접근한 경우PohamCar sunsin = new PohamCar("순신");sunsin.turnHandle(-20);System.out.println(sunsin.ownerName + "의 회전량은 " + .. 더보기
Singleton 이해하는 예제 package pack.my; public class SingletonTestMain {public static void main(String[] args) {Car car1 = new Car();Car car2 = new Car();System.out.println(car1 + " : " + car2);SingletonTest test1 = new SingletonTest();SingletonTest test2 = new SingletonTest();System.out.println(test1 + " : " + test2);test1.aa();System.out.println();SingletonTest s1 = SingletonTest.getinstance();SingletonTest s2 = Sin.. 더보기
업캐스팅 / 다운캐스팅 - 참조변수의 형변환 instanceof 형변환은 상속을 통한 인스턴스에서 사용할 수 있는 멤버의 범위를 조절하기 위함이다. 업캐스팅은 조상타입으로 형변환하는 것을 말하는데 생략할 수 있다. 생략할수있는 이유는 조상으로 거슬러 올라가면 갈 수록 사용할 수 있는 멤버범위가 더 좁아지거나 같아지기 때문이다. 조상타입을 자손타입으로(더 많은 멤버개수를 사용하도록) 변형하는 것을 다운캐스팅 - 생략불가능(다운캐스팅은 업캐스팅되어 있는 것만 가능하다)자손타입을 조상타입으로(더 적은 멤버개수를 사용하도록) 변형는 것을 업캐스팅 - 생략가능 // 1.서브클래스(주입해준 참조주소,WolfDog wd)의 오버라이딩한 메소드만 호출 가능// 2.슈퍼클래스(참조변수타입,Dog dog3)의 메소드 호출 가능// 3.서브클래스(주입해준참조주소, WolfDog wd)의.. 더보기