Programming Languages - Inheritance
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 {
// ...
};