상속 : 부모클래스의 모든 변수와 함수를 자식클래스가 사용할 수 있도록 하는것!
=> BUT 부모는 자식에게 상속받지 못함!
=> 부모클래스는 많은 자식클래스 가능 BUT 자식은 ONLY 한개의 부모 클래스!
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 : 부모클래스에 정의된 함수를 자식클래스에서 재정의 하기 위해 사용하는 키워드!
※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();
}