Day 15

·2023년 6월 27일
0

Global_2023_2

목록 보기
14/56

1. 다형성이란?

  • polymorphism ポリモーフィズム
    • AA aa = new BB()
    • "객체들의 타입이 다르면 똑같은 메시지가 전달 되더라도
      서로 다른 동작을 하는 것"

2. 아래가 되지 않는 이유에 대하여 메모리 그림으로 설명하시오.

SmartPhone ph2 = new MobilePhone();

3. 메소드 오버라이딩(Overriding) 이란?

  • 상속관계에서 똑같은 함수 이름로 바디{}(실행내용)만 달리 하는 것
    (리턴타입, 함수이름, 파라미터 종류와 갯수 다 같아야 함)
  • 자식꺼를 덮어(오버)쓴다(라이드)

1.interface 와 class 의 차이는?

  • 인터페이스는 자손이 구현하라.
  • 인터페이스도 다형성이 적용됨
  • 현업에서는 최초로 짤 때 클래스 대신 인터페이스로 시작한다
    • 이유
      • 선배들이 사용하기 때문
        (표준 = 강제 = 규약 = 프린트 드라이버)
      • 다중 상속지원
  • 인터페이스는 객체의 행동만 정의하고
    클래스는 행동과 상태를 모두 정의함.

2. 다음을 프로그램 하시오.[필수] ⭐️

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);
}
}

3. @Override 에 대하여 설명하시오.

  • 어노테이션, 부모 메소드를 자식 메소드가 override 했다는 선언

4. interface에 올 수 있는 두 가지는?

  • 인터페이스 안에 올수 있는 것은 함수구현{}(X)

    • 추상 메서드와 상수만 올 수 있다.

5. abstract 키워드에 대하여 설명하시오.

  • 함수 선언 = 함수 정의 = abstract = 추상메서드,
    abstract 가 없으면 컴파일러가 만든다

Point

  • 다형성

    • 부모 = 자식 / 자식 ≠ 부모
      형변환이 필요없다

    • 한단계 건너 뛰어서 가도 상관없다 (부모 = 손자)

    • 공통적으로 들어가는것은 다 부모로 올린다
      (그렇게 만들어놔야 편리하다)

  • 오버라이딩

    • "그냥 그렇게 만들었다" (더 깊이 알려면 논문 읽어야)

    • "오버라이딩은 자식꺼"

    • 오버라이딩 된 메소드는 인스턴스 외부에서 호출 안됨
      (super로만 해야함)

    • 변수는 불가능 (대상이 아님)

    • 모든 클래스는 object 클래스를 상속함
      (안보여도 컴파일러가 넣어준 상태)

  • 인터페이스는 주로 맨 앞에 I를 쓴다
    혹은 ~able

  • 하드코딩 : 일일히 한개한개 쓰는것(사실상 코딩이 안되는것)

0개의 댓글