inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

질문

해결된 질문

315

kimseunghwan7777

작성한 질문수 23

0

OOP 강의에서 상속 공부하던 중 의문이 생겨 질문 드립니다.

void main() {
  print('-------------Idol-------------');
  Idol apink = Idol(name: "에이핑크", members_count: 5);

  apink.say_name();
  apink.say_members_count();
//   apink.say_male();  - 이건 X
  
  print('-------------boy_group-------------');
  
  boy_group bts = boy_group('bts',7);
  bts.say_name();
  bts.say_members_count();
  bts.say_male();
  
  print('-------------girl_group-------------');
  
  girl_group red_velvet = girl_group('Red Velvet',5);
  red_velvet.say_name();
  red_velvet.say_members_count();
  red_velvet.say_female();
  
  print('-------------type_comparison-------------');
  print(apink is Idol);
  print(apink is boy_group);
  print(apink is girl_group);
  
  print('-------------type_comparison2-------------');
  print(bts is Idol);
  print(bts is boy_group);
  print(bts is girl_group);
  
  print('-------------type_comparison3-------------');
  print(red_velvet is Idol);
  print(red_velvet is boy_group);
  print(red_velvet is girl_group);
  
  
}

// 상속 - inheritance
//
// 상속을 받으면, 부모 클래스의 모든 속성을 자식 클래스가 부여받는다.

class Idol {
  //이름
  String name;
  //멤버 숫자
  int members_count;

  Idol({
    required this.name,
    required this.members_count,
  });

  void say_name() {
    print("저는 ${this.name}입니다.");
  }

  void say_members_count() {
    print("${this.name}은 ${this.members_count}명의 멤버가 있습니다.");
  }
}

// super가 부모를 의미하는!
class boy_group extends Idol {
  boy_group(
    String name,
    int members_count,
  ) : super(   
          name: name,
          members_count: members_count,
        );
  // 밑의 super(~~) 이것이 Idol(~~) 을 의미하는 것임! 즉, 부모의 constructor 의미하는 것!
  
  void say_male(){
    print("저는 남자아이돌입니다");
  }
}

class girl_group extends Idol {
  girl_group(
    String name,
    int members_count,
  ) : super(   
          name: name,
          members_count: members_count,
        );
  // 밑의 super(~~) 이것이 Idol(~~) 을 의미하는 것임! 즉, 부모의 constructor 의미하는 것!
  
  void say_female(){
    print("저는 여자아이돌입니다");
  }
}

여기에서는 name : name을 함으로써, 자식 class에서 받은 name을 부모 class의 name으로 복사해준다/넣어준다고 하셨는데, 그 다음 코드

void main() {
  TimesTwo tt = new TimesTwo(2);
  print(tt.calculate());
  
  TimesFour tf = new TimesFour(2);
  print(tf.calculate());
  
}

// method : function인데, class 내부에 있는!
// override - 재정의 (우선시하다. 덮어쓰다)

class TimesTwo {
  final int number;

  TimesTwo(
    this.number,
  );

  //method
  int calculate() {
    return number * 2;
  }
}

class TimesFour extends TimesTwo {
  TimesFour(
    int number,
  ) : super(number);  // 
  
  @override   //생략해도 되는데, 예의상 기입한다.
  int calculate() {
//     return super.number * 4;
    return super.calculate() * 2;   // 이것도 가능!
  }
  
}

이 내용을 보면, 부모class는 그냥 number인 것이 왜 그런 것이지 잘 이해가 안 됩니다. number:number가 아닌 이유가 어떤 것일까요?? named(required)의 여부가 이를 결정한 것일까요??

flutter 클론코딩 Flutter 클론코딩

답변 1

0

코드팩토리

안녕하세요!

말씀하신 number: number는 named parameter를 말씀하시는 것 같습니다.

현재 TimesTwo 클래스는 positional parameter를 받고 있기 때문에 positional parameter를 사용해주셔야합니다.

감사합니다!

 

198강 (){onTap(e);}의 이해 돕기

0

39

1

video_call 플러그인 설치후 에러 발생

0

47

1

SDK 안드로이드 설치 질문!

0

62

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

93

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

71

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

56

1

플레이스토어

0

60

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

56

1

가이드라인 질문

0

59

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

78

1

emulator 실행 오류

0

95

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

73

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

44

1

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

0

54

1

video_call 플러그인 설치시 에러문제

0

67

1

children 안의 if 문에서 { } 못쓰는 이유?

0

51

1

이렇게 오류가 떠요

0

67

1

AppBar 사용했는데

0

63

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

58

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

65

1

Video Player 프로젝트에 대한 추가 질문

0

54

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

43

1

geolocator 오류때문에 개발진행이 불가능입니다

0

64

1

API 관련 이슈

0

89

2