SmartPhone ph2 = new MobilePhone();
interface Printable { // MS가 정의하고 제공한 인터페이스
public void print(String doc);
}
//SPrinterDriver 와 LPrinterDriver를 만드시오
public static void main(String[] args) {
String myDoc = "This is a report about...";
// 삼성 프린터로 출력
Printable prn = new SPrinterDriver();
prn.print(myDoc);
System.out.println();
// LG 프린터로 출력
prn = new LPrinterDriver();
prn.print(myDoc);
}
/
출력:
From Samsung printer
This is a report about ...
From LG printer
This is a report about ...
/
삼성에서 만들어주는 클래스
class SamSungPrinter implements Printable{
@Override
public void print(String doc) {
System.out.println("From Samsung printer");
System.out.println(doc);
}
}
LG에서 만들어주는 클래스
class LGPrinter implements Printable{
@Override
public void print(String doc) {
System.out.println("From LG printer");
System.out.println(doc);
}
}
인터페이스 안에 올수 있는 것은 함수구현{}(X)
다형성
부모 = 자식 / 자식 ≠ 부모
형변환이 필요없다
한단계 건너 뛰어서 가도 상관없다 (부모 = 손자)
공통적으로 들어가는것은 다 부모로 올린다
(그렇게 만들어놔야 편리하다)
오버라이딩
"그냥 그렇게 만들었다" (더 깊이 알려면 논문 읽어야)
"오버라이딩은 자식꺼"
오버라이딩 된 메소드는 인스턴스 외부에서 호출 안됨
(super로만 해야함)
변수는 불가능 (대상이 아님)
모든 클래스는 object 클래스를 상속함
(안보여도 컴파일러가 넣어준 상태)
인터페이스는 주로 맨 앞에 I를 쓴다
혹은 ~able
하드코딩 : 일일히 한개한개 쓰는것(사실상 코딩이 안되는것)