Language/Flutter[Dart]

[Flutter] Chap 6~7: 클래스와 생성자 / 상속

FionaisFiona 2024. 4. 18. 20:54

[1] 클래스와 객체

클래스 멤버는 static 예약어로 선언한 멤버로 다음과 같이 쓰일 수 있다.

class MyClass{
	String data1 = 'hello';
    static String data2 = 'hello';
    
    myFun(){
    	print('myfun1 call...');
    }
    
    static myFun2(){
    	print('myFun2 call....');
    }
    
 }

data1 과 myFun1()은 객체 멤버로 선언하고, data2와 myFun2()는 앞에 static 을 붙여 클래스 멤버로 선언했다.

 

[2] 생성자와 멤버 초기화

생성자는 멤버 초기화 용도로 사용하며, 매개변수로 전달 받은 데이터를 클래스에 선언된 멤버에 대입한다.

class User{
	late String name;
    late int age;
    User(String name, int age){
    	this.name = name;
        this.age = age;
    }
    sayHello(){
    	print('name : $name, age: '$age');
    }
}

 

[3] 상속과 오버라이딩

class Superclass {
  // 슈퍼 클래스의 멤버들
}

class Subclass extends Superclass {
  // 서브 클래스의 멤버들
}

서브 클래스는 상위 클래스의 모든 멤버(필드, 메서드)를 상속받는다.

이러한 멤버들은 서브 클래스에서 직접 접근하여 사용할 수 있다. 서브 클래스에서 상위 클래스의 멤버를 재정의하려면 오버라이딩(overriding)을 사용할 수 있다.

void main(){
  //Method Overriding
  //Method 덮어 쓰기
  
  Parent parent = new Parent(3);
  Child child = new Child(3);
  
  print(parent.calculate());
  print(child.calculate());
}

class Parent {
  final int number;
  
  Parent(
    int number,
  ) : this.number = number;
  
  //Funtion 함수
  //Method
  
  int calculate(){
    return this.number * this.number;
  }
}

class Child extends Parent{
  Child(
  int number,) : super(
  number,);
  
  @override
  int calculate(){
    return this.number +  this.number;
  }
}

-> 부모 class안의 함수를 자식 클래스에서는 용도를 바꾸고 싶을때 Method Overriding을 하면 된다.

Method Overriding을 하려면 @override를 쓰고 밑에 바꾸고 싶은 함수 이름을 적고 바꿀 내용을 적으면 된다.

위 코드를 실행해보면 위에 것은 9 아래것은 6이 뜨는 것을 볼 수 있다.

 

- 부모 생성자 호출하기

: 자식 클래스의 생성자에서 부모 클래스 생성자를 호출하려면 super()문을 사용하여 콜론 오른쪽에 작성한다.

 

=> 상속을 통해 다른 클래스의 특성을 상속받고, 재정의하며, 확장할 수 있으므로 코드의 재사용성과 유지보수성을 높일 수 있다. 상속을 올바르게 사용하면 클래스 계층 구조를 잘 구성할 수 있다.


 

GitHub - Sumin0411/flutterStudy: Daily study records📝

Daily study records📝. Contribute to Sumin0411/flutterStudy development by creating an account on GitHub.

github.com