프로그래밍 공부 메모/flutter

class 다루기 #6 super / this 언제 써야 하나?

jjs815 2022. 5. 17. 19:29
void main() {
  Enginner codeFactory = new Enginner(
      languages: ['dart', 'java', 'javascript'], name: 'jjs', building: '강남');

  print(codeFactory.name);
  print(codeFactory.building);
  print(codeFactory.languages);

  codeFactory.sayInfo();
}

//직원
class Employee {
  final String? building; //여기서 final을 선언하는 이유는 해당 클래스에 파라미터를 무조건 받기위해
  final String? name;

  Employee(String? building, String? name)
      : this.building = building,
        this.name = name;
}

//엔지니어
//사용할줄 아는 언어 - 리스트 형식
class Enginner extends Employee {
  List<String>? languages;

  //employee 클래스를 상속 받았기 때문에 enginner의 생성자를 만들때도
  //부모의 생성자를 같이 처리 해야한다
  Enginner({List<String>? languages, String? name, String? building})
      : this.languages = languages,
        super(building, name);

  void sayInfo() {
    print( //부모 클래스에서 langugaes 변수 또한 상속 받았기 때문에 employee 클래스에서 직접적으로 명시하지 않아도 있는것 처럼 사용가능하다
        '저의 이름은 ${super.name} 입니다 제가 근무하는 건물은 ${super.building} 입니다 제가 사용할 수 있는 언어들은 ${this.languages} 입니다 ');
  }
}

만약 상속받은 변수 또는 함수를 자식 클래스에서 같은 이름으로 사용 한다면 해당 변수나 함수는 this를 사용해야 한다

반응형