20.12.04

민주·2021년 1월 17일
  1. 다형성의 활용 ( 필드 다형성 )
    - 필드 다형성은 객체 변경시에도 필드 타입에 변화를 주지 않아도 되는 것이다.

    - 부모 클래스 Spell

    - 자식 클래스 Fire, Ice, Light
    - 같은 메서드를 오버라이드에서 변경해줌

    - 3가지 마법을 사용하고 싶을때 8 ~ 13 은 다형성을 사용하지 않고 주문을 실행
    - 17 ~ 22 : 필드 다형성을 사용 하여 하나의 부모형태(spell)의 변수에 자식클래스가 들어가서 사용 됐다
    - 하지만 이 경우에는 계속 바꿔가면서 사용하는 것이기 때문에 세개가 동시에 spell에 들어갈 수 없다.

    - 위 경우에서 3개를 다 넣고 싶을 때 배열을 이용한다.
    - 8 : 하나의 클래스는 자료형이 될 수 있기 때문에 Spell을 spellArr로 객체화 시켜 3칸짜리 배열을 만들어 준다.
    - 9~11 : 칸 하나하나에 넣고 싶은 자식클래스를 넣어준다.
    - 14 ~ 16 : 자식 클래스에 있는 같은 메서드를 한번에 사용하고 싶기 때문에 for문 사용
    - 19 ~ 21 : 향상된 for문으로 사용 , spell에 spellArr를 넣는다

  2. 매개변수 다형성
    - 매개변수를 부모 형태로 하여 들어오는 변수의 폭을 넓힐 수 있다.

    - 부모 클래스 Car

    - 자식클래스 Ferrari
    - run은 오버라이드 해준 메서드
    - stop은 고유 메서드이다

    - 자식클래스 Maserati
    - run은 오버라이드 해준 메서드
    - stop는 고유 메서드이다.

    - 매개변수 다형성을 이용하면 Car에 자식클래스를 하나에 다 넣어서 상속된 메서드를 사용할 수 있다.
    - 하지만 다형성을 이용하면 고유 메서드를 사용할 수 없다.
    - 매개변수 다형성을 사용하지 않았을 때 장점은 메인에서 캐스팅 없이 자식 고유의 메서드를 사용할 수 있다.

    - 7 : Racer의 메서드를 사용하기 위해서 7로 객체화를 한다.
    - 9 : Maserati를 부모인 Car로 객체화를 시켰다.
    - 11 : Maserati의 drive 메서드는 run과 start가 있지만 부모로 들어갔기 때문에 고유메서드는 사용되지 않고
    상속받은 메서드와 부모에만 있는 메서드가 출력된다
    - 15 ~ 20 : 자식클래스 자체를 객체화를 시켜주는 경우에 메서드를 사용하게 되면 자식 고유 메서드를 사용 가능
    - 출력값 :
    -

  3. 추상화
    - 공통되는 특성을 추출하여 단순화 시키는 작업이다
    - 이 과정을 통해 꼭 필요한 메서드를 만들어 규격화 시킬 수 있다.
    - 추상 클래스를 만들고 싶을 때는 클래스를 만들때 abstract를 선택 해주면 된다

    - 공통되는 기능을 배포시켜야 하는 경우에 추상클래스를 사용한다.
    - 자식클래스에서 다 오버라이드를 사용하는 경우에 메서드의 내용은 필요 없으므로 코드블록을 지운다.
    - 이 때 그냥 지우기만 하면 오류가 나므로 추상메서드라는 의미로 abstract를 넣어준다.
    - 추상메서드는 추상클래스에서만 만들 수 있다.

profile
개발이좋아요

0개의 댓글