[Flutter] Chap 6~7: 클래스와 생성자 / 상속
[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