MST

星途 面试题库

面试题:Rust impl块结构体方法的继承与重写模拟

Rust中没有传统面向对象语言那样的继承机制,但可以通过trait等方式模拟类似行为。假设你有一个基础结构体`BaseStruct`及其impl块定义了一些方法,现在要创建一个`DerivedStruct`,它要继承`BaseStruct`的部分方法并对其中一个方法进行重写。请用代码示例说明如何实现(可借助trait和关联类型等概念)。
48.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义基础trait
trait BaseTrait {
    fn base_method(&self) {
        println!("This is the base method.");
    }
    fn method_to_override(&self);
}

// 基础结构体实现BaseTrait
struct BaseStruct;
impl BaseTrait for BaseStruct {
    fn method_to_override(&self) {
        println!("Base implementation of method_to_override.");
    }
}

// 定义派生结构体
struct DerivedStruct;

// 派生结构体实现BaseTrait,继承部分方法并重写特定方法
impl BaseTrait for DerivedStruct {
    fn method_to_override(&self) {
        println!("Derived implementation of method_to_override.");
    }
}

fn main() {
    let base = BaseStruct;
    base.base_method();
    base.method_to_override();

    let derived = DerivedStruct;
    derived.base_method();
    derived.method_to_override();
}