52 lines
1.1 KiB
Rust
52 lines
1.1 KiB
Rust
// Mit Interfaces aus Java vergleichbar
|
|
trait Flieger {
|
|
fn new() -> Self; // Eine new Funktion, um ein Struct zurück zu geben
|
|
fn fliegen(&self); // Instanzmethode, die Zeug macht, das noch nicht bekannt ist
|
|
fn landen(&self);
|
|
}
|
|
|
|
struct Flugeug {}
|
|
|
|
struct Ente {}
|
|
|
|
// Hier implementieren wir die Methoden vom Flieger Trait für Flugzeug
|
|
impl Flieger for Flugeug {
|
|
fn new() -> Self {
|
|
return Flugeug {};
|
|
}
|
|
|
|
fn fliegen(&self) {
|
|
println!("Ich heb ab, nichts hält mich am Boden");
|
|
}
|
|
|
|
fn landen(&self) {
|
|
println!("Party vorbei, ich lande")
|
|
}
|
|
}
|
|
|
|
// Hier implementieren wir die Methoden vom Flieger Trait für Ente
|
|
impl Flieger for Ente {
|
|
fn new() -> Self {
|
|
return Ente {};
|
|
}
|
|
|
|
fn fliegen(&self) {
|
|
println!("Quak, ich fliege, quak");
|
|
}
|
|
|
|
fn landen(&self) {
|
|
println!("Quak, ich lande nun, quak");
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let flugzeug: Flugeug = Flieger::new();
|
|
let ente: Ente = Flieger::new();
|
|
|
|
flugzeug.fliegen();
|
|
flugzeug.landen();
|
|
|
|
ente.fliegen();
|
|
ente.landen();
|
|
}
|