DOKK / manpages / debian 13 / tcl9.0-doc / oo_abstract.3tcl.en
abstract(3tcl) TclOO Commands abstract(3tcl)


oo::abstract - a class that does not allow direct instances of itself

package require tcl::oo
oo::abstract method ?arg ...?

oo::object

oo::class
oo::abstract

Abstract classes are classes that can contain definitions, but which cannot be directly manufactured; they are intended to only ever be inherited from and instantiated indirectly. The characteristic methods of oo::class (create and new) are not exported by an instance of oo::abstract.

Note that oo::abstract is not itself an instance of oo::abstract.

The oo::abstract class does not define an explicit constructor; this means that it is effectively the same as the constructor of the oo::class class.

The oo::abstract class does not define an explicit destructor; destroying an instance of it is just like destroying an ordinary class (and will destroy all its subclasses).

The oo::abstract class defines no new exported methods.

The oo::abstract class explicitly states that create, createWithNamespace, and new are unexported.

This example defines a simple class hierarchy and creates a new instance of it. It then invokes a method of the object before destroying the hierarchy and showing that the destruction is transitive.

oo::abstract create fruit {

method eat {} {
puts "yummy!"
} } oo::class create banana {
superclass fruit
method peel {} {
puts "skin now off"
} } set b [banana new] $b peel → prints 'skin now off' $b eat → prints 'yummy!' set f [fruit new] → error 'unknown method "new"...'

oo::define(3tcl), oo::object(3tcl)

abstract class, class, metaclass, object

0.3 TclOO