지난 시간 복습
추상메소드/추상클래스
추상메소드 : 몸체가 (중괄호,{}) 없는 메소드, 메소드 내에 할 내용, 기능 을 기록하지 않고 이름만 정해져 있음. abstract 키워드를 써야 함.
추상 클래스 : 추상 메소드가 1개 이상 존재하는 클래스. abstract 키워드를 써야 함.
추상 클래스를 상속받은 자식 클래스는 추상메소드를 override 해야 함.
이미 정의가 되어있는 메소드를 재정의할 때도 override 한다.
toString
wrap
parseInt : 문자열을 int 형으로 변환
DI : 의존성 주입, 제어의 역전
인터페이스 안에는 일반 method 는 들어갈 수 없다.
무조건 추상 method 만 들어갈 수 있음.
abstract 생략 가능
인터페이스는 다중 상속 가능
package com.tech.gt008.interphone;
public class PhoneTest {
public static void main(String[] args) {
PhoneCall call=new PhoneCall();
call.sendVisualMsg();
call.getVisualMsg();
call.sendVoiceMsg();
call.getVisualMsg();
}
}
PhoneTest.java (main)
package com.tech.gt008.interphone;
public class PhoneCall implements VisualCall,VoiceCall{
// 인터페이스는 다중 상속 가능
@Override
public void sendVoiceMsg() {
System.out.println("음성 메시지 전달");
}
@Override
public void getVoiceMsg() {
System.out.println("음성 메시지 수신");
}
@Override
public void sendVisualMsg() {
System.out.println("영상 메시지 전달");
}
@Override
public void getVisualMsg() {
System.out.println("영상 메시지 수신");
}
}
PhoneCall.java
package com.tech.gt008.interphone;
public interface VisualCall {
public void sendVisualMsg();
public void getVisualMsg();
}
VisualCall.java
package com.tech.gt008.interphone;
public interface VoiceCall {
public void sendVoiceMsg();
public void getVoiceMsg();
}
VoiceCall.java
결과
영상 메시지 전달
영상 메시지 수신
음성 메시지 전달
영상 메시지 수신
인터페이스에서 인터페이스로 상속할때는 extends를 사용한다.
클래스에서 클래스로 상속할때도 extends를 사용한다.
=> 같은 종류끼리는 extends
클래스에서 클래스와 인터페이스를 둘 다 상속받을 수 있다.
extends 먼저, implements 나중에
implements를 먼저, extends를 나중에 상속받게 되면 오류가 발생한다.
여기까지가 자바에 대한 1차 기본기 끝
나머지는 frame 배우고 나서 더 배워야 함
이라는데 뭘 배웠지..?
간단한 내용만 배운거 같은데....?
이후엔 swing 을 배운다고 함.
swing은 그래픽을 다루기 때문에 이것보다 더 재밌을 것이라 함.
java.awt - frame
javax.swing - jframe
스윙 배우고 개인 프로젝트 진행할 예정
출력결과가 저런 창으로 나오게 하는 게 swing, jframe 이다.
JFrame을 상속하면 객체생성 없이도 바로 출력 가능
무료 아이콘이미지 사이트
프레임 상단 이미지 변경
버튼 생성
버튼 여러 개 생성
공간이 부족하면 아래줄로 내려가고, 공간이 남으면 그대로 옆에 생성된다
=> FlowLayout 의 기능
BorderLayout의 구성
North, West, East, South, Center 의 5개로 이루어져 있음.
각 part 에 button을 추가한 모습
Flowlayout 에서 '왼쪽 정렬', button 간격 '좌우 30, 상하 60' 을 준 모습
GridLayout 을 이용해서 label 과 textfield 를 추가한 모습
GridLayout (행, 열, 수평간격, 수직간격)
setLayout의 기본값은 FlowLayout,
null 로 값을 주면 NoneLayout
=> 위치를 지정해줘야함
NoneLayout 지정으로 인해 label의 위치를 지정해서 출력
반복문을 사용해서 만들 수 있음.
JButton() 안에는 문자열만 들어갈 수 있어서 i 를 String 으로 변환시켜줌.
CardLayout
컨테이너에 카드레이아웃 형태로, 라벨을 설정한 판넬을 붙인 후 라벨을 호출해서 출력한다.
판넬이 차곡차곡 쌓여있다고 생각하면 됨. 호출하면 그 판넬이 제일 위로 올라오는 느낌
=> 이벤트 처리로 활용 가능
이벤트처리 (차후 배울 내용)
버튼에 action을 달아서 누를 때마다 출력 (마우스 클릭 이벤트)
온도변환기 만들기 - 예시