코딩의 다양성? 코드를 써내려가는 방법은 정말 다양하게 존재한다. 여러 관점, 다양한 영역을 넘나들며 코드를 작성할 수 있는 경험과 눈이 필요하다. (빠른 손과 검색이 필요할수도..ㅎㅎ)
자바의 다형성? java 언어의 큰 특징 중 하나이다. 하나의 참조변수를 통해 여러 객체를 참조할 수 있도록 하여, 같은 참조변수이지만 그 실행은 서로 다르게 작동시킬 수 있다. 이를 통해 유지보수하기 쉬어지고, 재사용의 범위가 넓어질 수 있다.
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class JButtonArray implements ActionListener{
//선언부
JFrame jf = new JFrame();
JButton jbtns[] = new JButton[4];
String jbtnsLabels[] = {"one", "two", "three", "four"};
//생성자
public JButtonArray() {
//객체배열 초기화하기, 생성자 첫번째 역할은 전역변수의 초기화를 담당
for(int i=0;i<jbtns.length;i++) {
jbtns[i] = new JButton(jbtnsLabels[i]);
jbtns[i].addActionListener(this); //이 클래스를 참조
}
}
//사용자메소드
public void initDisplay() {
jf.setTitle("객체배열 연습");
jf.setVisible(true);
jf.setSize(500,300);
jf.setLayout(new GridLayout(1,4)); // 1/4로 균등분할하여 레이아웃됨
//for문 사용하여 각 버튼을 레이아웃으로 생상하여 배치함.
for(int i=0;i<jbtns.length;i++) {
jf.add(jbtns[i]);
}
}
//메인메소드
public static void main(String[] args) {
JButtonArray ja = new JButtonArray();
ja.initDisplay();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
JFrame → setSize, setVisible, setTitle, add()
JPanel → setLayout
JTextField
GridLayout(int 행, int 열)
삼항연산자
세 개의 피연산자를 필요로 하는 연산자
public static void main(String[] args) {
System.out.println(10+10); //20
System.out.println("10"+10); //1010 숫자열이 문자열과 만나면 더하기x(컨켓?)
System.out.println("10"+(10+20));//1030
int hour = 7;
String result1 = (hour<10 ? "참" : "거짓");
System.out.println(result1);
String result2= (hour<10 ? "0"+hour : ""+hour);
System.out.println(result2);
}
API
인터페이스에 대한 구현체 클래스 설계 (설계적 관점으로 보기)
public abstract class Duck {
public Duck() {}
//추상메소드 o
public abstract void display();
//추상메소드 x
public void swimming() {
System.out.println("모든 오리는 물위에 뜬다.");
}
}
선언부와 생성부가 다르게 코딩 전개
//선언부와 생성부의 타입이 다르다!(권장사항)
QuackBehavior quackBehavior = new Squeak();