인터페이스는 클래스가 지켜야 하는 규약이다. 메소드나 변수에 _를 붙이면 다른 파일에서 볼 수 없다(private).
class Elephant {
// Public interface
final String name;
// In the interface, but visible only in this library. (private)
final int _id = 23;
// Not in the interface, since this is a constructor.
Elephant(this.name);
// Public method
sayHi() => 'My name is $name.';
// Private method
_saySecret() => 'My ID is $_id.';
}
abstract class Dog {
void walk() {
print('walking...');
}
}
class Pug extends Dog {
String breed = 'pug';
void walk() {
super.walk();
print('I am tired. Stop now.');
}
}
: 타입을 매개변수화 하는 방법, 클래스가 타입을 래핑하여 다양하게 사용할 수 있다.
Box<String> box1 = Box('cool');
class Box<T> {
T value;
Box(this.value);
T openBox() {
return value;
}
}
이름 충돌을 피하기 가장 쉬운 방법은 별칭을 지정하는 것
import 'somewhere.dart' as External;