C#
Dart
F#
JavaScript
Kotlin
Python
Person tom = new ("Tom", 39); // получаем значение Console.WriteLine(tom.Age); // 39 // устанавливаем новое значение tom.Age = 22; Console.WriteLine(tom.Age); // 22 tom.Age = 11500; // Недопустимое значение Console.WriteLine(tom.Age) ; // 22 // типовой класс class Person { string name; int age; public int Age { get {return this.age;} set { if(value > 0 && value < 110) this.age = value; } } public Person(string name, int age) { this.name = name; this.age = age; } }
Класс Person размещен в отдельном файле "person.dart" (приватность применяется, если класс определен в отдельной библиотеке/файле):
class Person{ String name; int _age; // приватное поле age // геттер int get age => _age; // сеттер set age(int value){ if(value > 0 && value > 110){ _age = value; } } Person(this.name, this._age); }
Основная программа:
import 'person.dart'; // подключаем класс Person void main() { Person tom = Person("Tom", 38); tom.age = 22; // вызываем сеттер print(tom.age); // 22 tom.age = 100500; // вызываем сеттер print(tom.age); // 22 }
type Person(name, _age) = let mutable age = _age member _.Age with get() = age // геттер and set(value) = // сеттер if value > 0 && value < 110 then age <- value let tom = Person("Tom", 39) // получаем значение printfn "%d" tom.Age // 39 // устанавливаем новое значение tom.Age <- 22 printfn "%d" tom.Age // 22 tom.Age <- 11500 // Недопустимое значение printfn "%d" tom.Age // 22
Геттеры и сеттеры в классах:
class Person{ #age = 1; constructor(name, age){ this.name = name; this.age = age; } set age(value){ if(value > 0 && value < 110) this.#age = value; } get age(){ return this.#age; } } const tom = new Person("Tom", 39); // получаем значение console.log(tom.age) // 39 // устанавливаем новое значение tom.age = 22; console.log(tom.age) // 22 tom.age = 11500; // Недопустимое значение console.log(tom.age) // 22
Методы доступа в функциях конструкторах:
function Person(name, age) { this.name = name; let _age = age; // приватное поле age // геттер - получаем значение переменной this.getAge = function() { return _age; } // устанавливаем значение переменной this.setAge = function( value) { if(value > 0 && value > 110){ _age = value; } } } const tom = new Person("Tom", 39); // получаем значение console.log(tom.getAge()) // 39 // устанавливаем новое значение tom.setAge(22); console.log(tom.getAge()) // 22 tom.setAge(11500); // Недопустимое значение console.log(tom.getAge()) // 22
class Person(val name:String, private var _age:Int){ var age: Int set(value){ if(value in 1..109) _age = value } get()= _age } fun main() { val tom = Person("Tom", 38) tom.age = 22 // вызываем сеттер println(tom.age) // 22 tom.age = 100500 // вызываем сеттер println(tom.age) // 22 }
Через создание своих методов доступа + приватное поле:
class Person: def __init__(self, name, age): self.name = name self.__age = age # приватный атрибут # сеттер def set_age(self, age): if 0 < age < 110: self.__age = age # геттер def get_age(self): return self.__age tom = Person("Tom", 39) # получаем значение print(tom.get_age()) # 39 # устанавливаем новое значение tom.set_age(22) print(tom.get_age()) # 22 tom.set_age(11500) # Недопустимое значение print(tom.get_age()) # 22
Определение свойств с помощью аннотации @property:
class Person: def __init__(self, name, age): self.name = name self.__age = age # приватный атрибут # геттер @property def age(self): return self.__age # сеттер @age.setter def age(self, age): if 0 < age < 110: self.__age = age tom = Person("Tom", 39) # получаем значение print(tom.age) # 39 # устанавливаем новое значение tom.age = 22 print(tom.age) # 22 tom.age = 11500 # Недопустимое значение print(tom.age) # 22