# Getter 과 Setter
class person {
String _name;
String get name => _name;
set name(String name) => _name = name;
}
# 예시
class Person {
late String _name;
String get name => _name;
set name(String name) => _name = name;
}
main() {
Person person = Person();
person.name = "Kim";
print(person.name);
}
------------------------------------------------------------------------------------------
# 결과
Kim
# 예시
class Person {
late String _name;
String get hello => _name;
set setName(String name) => _name = name;
}
main() {
Person person = Person();
person.setName = "Kim";
print(person.hello);
}
------------------------------------------------------------------------------------------
# 결과
Kim
# 예시
class Person {
String _name;
String get name => (_name == null) ? "Lee" : _name;
set name(String name) => (name == null) ? _name = "Park" : _name = name;
}
main() {
Person person = Person();
print(person.name);
person.name = null;
print(person.name);
}
# 추상 클래스
abstract class Person {
eat();
}
abstract
키워드를 붙여서 표현implements
키워드로 임플리먼트 한 후에 반드시 추상 메서드를 오버라이딩 해야 함# 예시
abstract class Person {
eat();
}
class Developer implements Person {
eat() {
print("Developer eat a meal");
}
}
main() {
Person person = Developer();
person.eat();
}
------------------------------------------------------------------------------------------
# 결과
Developer eat a meal
@override
어노테이션 생략이 가능# 예시
abstract class Person {
eat();
sleep() {
print("Person must sleep");
}
}
class Developer implements Person {
eat() {
print("Developer eat a meal");
}
sleep() {
print("Developer must sleep");
}
}
main() {
Person person = Developer();
person.eat();
person.sleep();
}
------------------------------------------------------------------------------------------
# 결과
Developer eat a meal
Developer must sleep
@override
어노테이션을 생략한 것을 볼 수 있음extends
키워드를 사용해서 상속받는 일반 클래스의 경우에는 단 하나의 클래스만 상속 가능# 예시
main() {
Developer person = Developer();
person.eat();
person.sleep();
person.work();
}
abstract class Person {
eat();
sleep() {
print("Person must sleep");
}
}
abstract class Junior {
work() {
print("work hard");
}
}
class Developer implements Person, Junior {
eat() {
print("Developer eat a meal");
}
sleep() {
print("Developer must sleep");
}
work() {
print("Junior developer works hard");
}
}
------------------------------------------------------------------------------------------
# 결과
Developer eat a meal
Developer must sleep
Junior developer works hard
Tip! 요약
- 추상 클래스와 추상 메서드는 abstract 키워드를 사용
- 추상 클래스는 참조형 변수의 타입으로 사용할 수 있음
- 추상 클래스를 임플리먼트 할 때 반드시 메서드를 오버라이딩 해야 함
- 추상 클래스에 추상 메서드만 존재하는 것은 아님
- 메서드 오버라이딩 시
@override
어노테이션은 생략 가능