java가 제공해주는 클래스에는 Frame이라는 클래스가 존재한다.
Frame의 클래스에는 다양한 메서드가 있는데
우리가 할 일은 창을 띄우는 것이다.
다른 클래스를 가져오는 방법은 크게 2가지가 있는데.
하나는 포함 관계이고 다른 방법은 상속 관계이다.
Frame은 atw클래스에 위치해있다.
Frame관련 문서 공식문서(api)를 찾아보자.
공식적인 문서를 찾는게 가장 먼저되어야한다.
API는 java에서 이미 만들어 놓은 다양한 클래스, 메서드, 인터페이스 등의 집합입니다. 개발자들이 프로그램을 개발에 도움을 주는 기능들을 모아놓았습니다.
또 어떻게 사용해야하는지 방법이나 관련 설명이 쭉 서술되어 있습니다.
위의 사진과 같이 java.desktop > java.awt 를 찾을 수 있습니다. java.awt안에 들어가면 Frame을 찾을 수 있습니다.
포함 관계는 약한 결합이다.
우선 포함관계로 윈도우 창을 띄어보자.
클래스의 멤버로 클래스를 참조 변수를 선언하는 것이다.
package pack2;
import java.awt.Frame;
//java가 지원하는 Frame 클래스로 창띄우기 : 포함관계
public class MyFrame {
private String title = "포함관계";
private Frame frame;
public MyFrame() {
frame = new Frame(title); //객체를 만들었다.
}
private void display() {
frame.setSize(500, 300);//윈도우 창 크기
frame.setLocation(200, 150); //왼쪽 상단에서부터 윈도우창 위치
frame.setVisible(true);
}
public static void main(String[] args) {
MyFrame frame = new MyFrame();
frame1.display();
}
}
실행하면 아래와 같이 윈도우 창이뜬다. 물론 다른 코드 작업을 안했기에 내용은 없다.
윈도우창은 사진과 같이 메뉴창도 나오고 최대화
혹은 최소화
도 가능하다.
하지만, 닫기는 불가하다. 개발자의 취향대로 작동되도록 코드에 포함시키지 않은 것같다.
상속은 extends로 부모 클래스를 가져오는 것이다.
(private를 제외한)부모의 메서드나 변수를 사용할 수 있다.
package pack3;
import java.awt.Frame;
public class MyFrame2 extends Frame{
public MyFrame2() {
super("상속 사용");
}
void display() {
setSize(500,300); //현재 클래스setSize를 정의하지 않았으면 super키워드는 필요없다.
//super.setSize(500,300);
setLocation(200,150);
setVisible(true);
}
public static void main(String[] args) {
// [1번 방법]
// MyFrame2 frame = new MyFrame2();
// frame.display();
// [2번 방법]
new MyFrame2().display();
}
}
상속은 포함관계와 비교하면 강한 결합을 가진다.