More advanced class semantics

This commit is contained in:
2026-06-16 15:54:21 +02:00
parent ecfff0ac0d
commit d434ec78e7
2 changed files with 152 additions and 28 deletions
+11 -5
View File
@@ -1,11 +1,17 @@
pub module class_test;
pub class Animal<T> {
pub class Animal {
pub name String;
pub val T;
pub val i32;
constructor() {
self.name = "Rex".to_string();
self.init_v();
}
pub fn void init_v(*mut self) {
self.val = 0;
}
pub fn String speak(*self) {
@@ -19,7 +25,7 @@ pub class Animal<T> {
pub fn void static_method() {}
}
pub class Mammal<T> : Animal<T> {
pub class Mammal : Animal {
constructor() {
super = Super::new();
}
@@ -30,12 +36,12 @@ pub class Mammal<T> : Animal<T> {
}
}
pub class Dog : Mammal<i32> {
pub class Dog : Mammal {
constructor() {
super = Super::new();
}
pub override(Animal<i32>) fn String speak(*self) {
pub override(Animal) fn String speak(*self) {
"Woof!".to_string()
}