Next: Initialization of Public Up: Tix Object Oriented Previous: The SetBindings Method

## Declaring and Using Variables

The private variables of a widget class do not need to be declared. In fact they can be initialized and used anywhere by any method. Usually, however, general purpose private variables are initialized by the `InitWidgetRec` method and subwidget variables are initialized in the `ConstructWidget` method.

We have seen in the `tixArrowButton:` `InitWidgetRec` example that the private variable `data(count)` was initialized there. Also, the private variable `data(w:button)` was initialized in `tixArrowButton:` `ConstructWidget` and subsequently used in `tixArrowButton:SetBindings`. In contrast, public variables must be declared inside the class declaration. The following arguments are used to declare the public variables and specify various options for them:

-flag
  As shown in the class declaration in the figure, the -flag argument declares all the public variables of the `TixArrowButton` class to be -direction and -state.

-configspec
  We can use the -configspec argument to specify the details of each public variable. For example, the following declaration:

      -configspec {
          {-direction direction Direction e}
          {-state state State normal}
      }

  specifies that the -direction variable has the resource name direction and resource class Direction; its default value is `e`. The application programmer can assign value to this variable by using the -direction option in the command line. The declaration of -state installs similar definitions for that variable.

- Initialization of Public Variables
- Public Variable Configuration Methods