어떤 것을 이렇게 부를 수도 저렇게 부를 수도 있는 것
핸들이 있고, 오른 페달이 액셀, 왼쪽이 브레이크인 것 = 차, 그랜저, 버스 …
세부적인 부분 부분은 다르지만, 어쨌든 대충 보면 그냥 차다
abstract class Character {
String name;
Character({required this.name});
}
class Hero extends Character {
Hero({required super.name});
void attack();
}
Character character = Character(name: '캐릭터'); // 이건 불가능
Character hero = Hero(name: '히어로'); // 이건 가능
abstract class Character {
String name;
Character({required this.name});
}
class Hero extends Character {
Hero({required super.name});
void attack();
}
Character hero = Hero(name: '히어로');
hero.attack();
// Hero 인스턴스를 생성했지만, 타입을 상위 클래스로 지정했기 때문에
// hero는 Character 객체로 인식된다.
// 따라서, Character 추상 클래스에는 attack() 메소드가 없기 때문에 메소드 호출이 안된다.
abstract class Character {
String name;
Character({required this.name});
void move(){
print('캐릭터 이동');
}
}
class Hero extends Character {
Hero({required super.name});
void move(){
print('히어로 이동');
}
}
Character hero = Hero(name: '히어로');
hero.move() // 히어로 이동 출력
Character character = Hero(name: '히어로');
Hero hero = hero as Hero;
Character character = Hero(name: '히어로');
if(hero1 is Hero) {
Hero hero = hero as Hero;
}