logo

Programming Languages - Inheritance

Last Updated: 2024-01-21
C++ Java Kotlin Go JS Python Rust
Inheritance Yes Yes Yes No Yes Yes No
Multiple Inheritance Yes No No - No Yes -

By Language

Java / Kotlin

Java and Kotlin do not support Multi Inheritance.

class Foo extends Bar {
    ...
}

Java vs Kotlin

  • Java: By default a class can be extended; final class cannot be extended.
  • Kotlin: By default a class cannot be extended; open class can be extended

Go

Go does not support subclassing, but can have embeddings:

type Job struct {
    Command string
    *log.Logger
}

The Job type now has the Print, Printf, Println and other methods of *log.Logger.

To create a Job:

job := &Job{command, log.New(os.Stderr, "Job: ", log.Ldate)}

JavaScript

class Foo extends Parent {}

JavaScript does not support multiple inheritance. Use mixins.

Python

Supports multiple inheritance.

class Foo(Parent1, Parent2):

C++

Support multiple inheritance.

// class A
// class B
class C: public A, public B {
  // ...
};