Геттеры и сеттеры

Последнее обновление: 03.03.2024

C#

Dart

F#

JavaScript

Kotlin

Python

C#

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;
    }
}

Dart

Класс 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
}

F#

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

JavaScript

Геттеры и сеттеры в классах:

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

Kotlin

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
}

Python

Через создание своих методов доступа + приватное поле:

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
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850