DAY 08
static & non-static
지난시간
✍️ has a~ 관계
//import Address class
// 또 다른 클래스를 멤버로 갖는 클래스 <<has a~ [멤버], is a~ [상속]>>
public class My_Test{
private Address myAddress; //has a~ 관계
public My_Test(){ // 멤버변수 초기화 /2. Address()객체를 생성
myAddress = new Address();
}
public My_Test(Address address){
myAddress = address;
}
public Address getMyAddress(){
return myAddress;
}
public void set MyAddress(Address myAddress){
this.myAddress = myAddress;
}
@Override
public String toString(){
//4. 내용의 출력문을 만들어 리턴
//return "My_Test [myAddress= " + myAddress.toString()+"]";
String str = String.format("%10s %10s %10s\n",myAddress.getName(), myAddress.getAddr(),myAddress.getPhone());
return str;
}
}
public class M_My_Test{
public static void main (String[] args) {
My_Test m1 = new My_Test(); //1. 기본생성자를 호출하면서 객체 생성
System.out.println(m1); //m1.toString() / 3.m1.toString()호출
//5. println()로 리턴받아 출력하게 된다.
}
}
✍️ 객체배열 (Object Array)
public class Test01{
public static void main(String[] args){
//Object Array case 1
Address[] ar = new Address[3];
ar[0] = new Address("1111","1111","1111");
ar[1] = new Address("2222","2222","2222");
ar[2] = new Address("3333","3333","3333");
for (Address res : ar){
System.out.println(res);
}
System.out.println();
//Object Array case 2
Address[] ar02 = new Address[]{
new Address("1111","1111","1111"), //[0]
new Address("2222","2222","2222"), // [1]
new Address("3333","3333","3333")}; //[2]
for (Address res : ar02){
System.out.println(res);
}
}
✍️ API 활용
//Frame()
public class Test(){
public static void main (String[] args){
Frame fi = new Frame();
fi.setSize(new Dimensiom(500,500));
fi.setTitle("내가만든프레임");
Button bt_click = new Button ("[클릭]");
fi.add(bt_click);
fi.setFont(new Font("SansSerif",Font.BOLD|Font.ITALIC,50));
fi.setVisible(true);
System.out.println(fi.getBackground());
}
✍️ 상속
클래스간의 상속
인터페이스간의 상속(추상화)
클래스가 인터페이스를 상속
[상속의 원형]
public class Vector<E>
extends AbstractList <E>
implements List<E> , RandomAvvess, Cloneable, Serializable
✏️ 클래스간의 상속
- 클래스의 기능을 자유롭게 호출하고 기능을 확장하기 위해 먼저 선언된 클래스를 선조로, 기능을 필요로 하는 클래스를 후손으로 관계를 가진 경우를 말한다.
- 단일 상속을 원칙으로 하며 다중상속은 클래스간의 허용되지 않는다. // AA <- BB super(AA) <-CC super(BB)
ex)
//두수를 관리하고 합을 구하는 클래스
public class AA{
private int a;
private int b;
public AA(){
super();
}
public AA(int a,int b){
super();
this.a = a;
this.b = b;
}
//getter & setter a,b
public int getHap(){
return getA() + getB();
}
}
//(a+b)-d
public class BB extends AA{
private int d;
public BB(){
super(); // AA()
}
public BB (int a,int b, int d){
super(a,b); //AA(int a,int b);
this.d = d;
}
// getter & setter d
public int getRes(){
//return (a+b)-d // X -> a,b=private
return (getA() + getB()) -d; // O
return getHap() -d; // O
return getHap() - getD();// O
//3개중에 하나 사용
}
}