[OSAM] DART 언어 기초(8) Class [#3] Inheritance

hello_hidi·2021년 7월 22일
0

[국소아] DART

목록 보기
8/16
post-thumbnail

> 상속이란?

상속 : 부모클래스의 모든 변수와 함수를 자식클래스가 사용할 수 있도록 하는것!
=> BUT 부모는 자식에게 상속받지 못함!
=> 부모클래스는 많은 자식클래스 가능 BUT 자식은 ONLY 한개의 부모 클래스!

> extends, super 키워드

Extends : 클래스 상속을 위한 키워드 => 자식클래스 extends 부모클래스
super : 부모클래스 접근을 위한 클래스

class TopingPizza extends Pizza {
  String toping;
  TopingPizza(String bread, String cheese, String toping){
    super.bread = bread;
    super.cheese = cheese;
    this.toping = toping;
  }

> override

override : 부모클래스에 정의된 함수를 자식클래스에서 재정의 하기 위해 사용하는 키워드!
※overide 자체는 부모의 함수를 무효화시키는 행위, 그 아래 코드를 재정의하는 것임!!
overide 자체가 코드 재정의는 아님!!
@override
부모클래스 함수이름

@override
  void sayPizza(){
    print("피자 이름은 ${this.toping}피자입니다!");
  }
}

> 적용

class Pizza {
  String bread;
  String cheese;

  Pizza({String bread, String cheese})
      : this.bread = bread,
        this.cheese = cheese;

  void sayBread() {
    print("${this.bread}로 만든 피자가 나왔습니다!");
  }
  
  void sayCheese(){
    print("${this.cheese}로 만든 피자가 나왔습니다!");
  }
  
  void sayPizza(){
    print("피자가 나왔습니다!");
  }
}

class TopingPizza extends Pizza {
  String toping;
  TopingPizza(String bread, String cheese, String toping){
    super.bread = bread;
    super.cheese = cheese;
    this.toping = toping;
  }
     
  @override
  void sayPizza(){
    print("피자 이름은 ${this.toping}피자입니다!");
  }
}


void main(){
  Pizza pizza = new Pizza(bread : "기본빵", cheese : "기본치즈");
  pizza.sayBread();
  pizza.sayCheese();
  pizza.sayPizza();
  
  TopingPizza ppizza = new TopingPizza("기본빵", "기본치즈","페퍼로니");
  ppizza.sayBread();
  ppizza.sayCheese();
  ppizza.sayPizza();
}
profile
안뇽희디

0개의 댓글