## 7.3 Base

This chapter documents the changes that have taken place in the Base Environment (formerly Standard Modules) and base language.

### 7.3.1 Classes with Multiple Inheritance

Multiple inheritance does not provide for automatic conflict resolution. If a conflicting method definition arises in multiple inheritance, the conflict must be resolved by overriding the method. Otherwise, an exception is raised.

A conflicting method definition arises if a method is defined by more than one class. For example,

> `class A meth m skip end end
> class B meth m skip end end
> class C from A B end`

raises an exception (the old model would silently pick the method from `B`), since both `A` and `B` define the method `m`. The only way to fix this is by overriding `m` when creating class `C`:

> `class C from A B meth m skip end end`

Features and attributes are handled identically. For a more thorough discussion see Chapter 10 of ``Tutorial of Oz''.

### 7.3.2 The Modules `Class` and `Object`

The modules `Class` and `Object` underwent a major redesign and re-implementation. The redesign became necessary because the old modules compromised both system and application security. Programming abstractions that support common patterns of object oriented programming are described in the module `ObjectSupport` (see Chapter 29 of ``System Modules'').

### 7.3.3 Chunks

The procedures `Chunk.hasFeature` and `Chunk.getFeature` are gone. Just use `HasFeature` and `Value.'.'` (see Chapter 3 of ``The Oz Base Environment'').