Методы являются элементами класса, обращение к ним происходит как и к полям через точку, но дополнительно указываются скобки в конце с возможной передачей параметров.
// Методы
class CompetitorWait {
int number;
int timestamp;
CompetitorWait ( int number , [ int timestamp = 0 ] ) {
this.number = number;
this.timestamp = timestamp;
}
// Метод
int getTimestamp ( ) {
return this.timestamp;
}
void setTimestamp ( int n ) {
this.timestamp = n;
}
@override
String toString ( ) {
return 'Number = [$number] Start = [$timestamp]';
}
}
// Программа
void main ( ) {
// Методы
var sportsmen = CompetitorWait ( 12 , 15124241421 );
print ( sportsmen.getTimestamp ( ) ); // 15124241421
sportsmen.setTimestamp ( 15124241422 );
print ( sportsmen.getTimestamp ( ) ); // 15124241422
}Геттеры и сеттеры позволяют производить вычисления и задавать значения через некоторые абстрактные поля, в частности в примере ниже мы не указываем поля right и bottom, но на них установлены get и set операции, которые зависят и влияют на другие поля.
// геттеры и сеттеры
class Rectangle {
double left, top, width, height;
Rectangle(this.left, this.top, this.width, this.height);
double get right => left + width;
set right(double value) => left = value - width;
double get bottom => top + height;
set bottom(double value) => top = value - height;
}
// Программа
void main ( ) {
// геттеры и сеттеры
var rect = Rectangle(3, 4, 20, 15);
print(rect.right); // 23
print(rect.left); // 3
rect.right = 12;
print(rect.left); // -8
print(rect.bottom); // 19
print(rect.top); // 4
rect.bottom = 20;
print(rect.top); // 5
}