# Implicit getter/setter methods

Object-oriented programming practice discourages direct access to properties within a class. Classes typically define "getter" methods that provide read access and "setter" methods that provide write access to a given property. For example, imagine a class that contains a property called `userName`:

    var userName:String;

Instead of allowing instances of the class to directly access this property (`obj.userName = "Jody"`, for example), the class would might define two methods, `getUserName` and `setUserName`, that would be implemented as follows:

    function getUserName:String () {
    	return userName;
    }

    function setUserName(name:String): {
    	userName = name;
    }

As you can see, `getUserName` returns the current value of `userName`; `setUserName` sets the value of `userName` to the string parameter passed to the method. An instance of the class would then use the following syntax to get or set the `userName` property.

    // calling "getter" method
    var name = obj.getUserName;
    // calling "setter" method
    obj.setUserName("Jody");

However, if you want to use a more concise syntax, use implicit getter and setter methods. Implicit getter/setter methods let you access class properties in a direct manner, but while maintaining good OOP practice.

To define these methods, use the `get` and `set` method attributes. You create methods that get or set the value of a property, and add the keyword `get` or `set` before the method name.

    function get user:String () {
    	return userName;
    }

    function set user(name:String): {
    	userName = name;
    }

A getter method must not take any parameters. A setter must take exactly one required parameter. A setter can have the same name as a getter in the same scope.

Unlike ordinary methods, getter and setter methods are invoked without any parentheses or arguments. For example, the following syntax could now be used to access or modify the value of `userName` using the getter and setter methods defined above.

    var name = obj.user;
    obj.user = "Jack";

Note: Implicit getters and setters are syntactic shorthand for the `Object.addProperty()` method in ActionScript 1 . See Adding getter/setter properties to objects.