| アクセス・レベル | 制限 |
|---|---|
| private | メソッドを宣言したクラスのスコープからのみ使うことができる |
| protected | メソッドを宣言したクラスのスコープと派生したクラスのスコープで使うことができる |
| public | すべてのクラスのスコープとグローバル・スコープで使うことができる(デフォルト) |
メンバには3種類のアクセス・レベルがあります。
アクセス・レベルの記述を省略した場合は、protectedになります。
| アクセス・レベル | 制限 |
|---|---|
| private | メンバを宣言したクラスのスコープからのみアクセスできる |
| protected | 派生したクラスからアクセスできることを除けば、privateメンバと同じである(デフォルト) |
| public | すべてのスコープからアクセスできる |
# 乱数クラス
class Random {
# コンストラクタ定義
constructor {} {
init [expr [clock seconds]+[pid]]
}
# デストラクタ定義
destructor {}
# メソッド宣言
protected method init {value}
# メソッド宣言
public method getvalue {}
}
# メソッド定義
body Random::init {value} {
expr srand($value)
return
}
# メソッド定義
body Random::getvalue {} {
expr rand()
}
|
# 色クラス
class Color {
# staticメソッドの定義
proc RGB {color} {
switch -- $color {
red {set value "255 0 0"}
green {set value "0 255 0"}
blue {set value "0 0 255"}
}
return $value
}
}
# クラスを指定して呼び出す
Color::RGB red
=> 255 0 0
|
# カウンタ・クラス
class Counter {
# staticメンバの定義
public common count 0
# メソッドの定義
public method incr {} {
::incr count
}
}
# 1つ目のオブジェクトを作成
Counter c1
# カウンタのアップ
c1 incr
=> 1
# カウンタの取得
c1 cget -count
=> 1
# 2つ目のオブジェクトを作成
Counter c2
# カウンタの取得
c2 cget -count
=> 1
|