无障碍浏览
无障碍浏览

【2023级】智能医学工程专业-计算机程序设计-第10章-继承与多态

作者:阮晓龙发布时间:2024/9/13 13:17:51

基本信息:

  • 章节名称:智能医学工程专业-计算机程序设计-第10章-继承与多态

  • 授课教师:信息技术学院互联网技术教学团队

  • 完成时间:2024年09月

  • 适用年级:2023级

  • 适用专业:智能医学工程


文档内容:


学习资源:

  • 代码:eg10.1.2

class Animal {
    String name;

    Animal(String name) {
        this.name = name;
    }
}

class Dog extends Animal {
    Dog(String name) {
        super(name); // 调用父类的构造方法
    }

    void bark() {
        System.out.println(name + " is barking.");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("Buddy");
        dog.bark();
    }
}


  • 代码:eg10.2.1

class MathOperations {
    int add(int a, int b) {
        return a + b;
    }
    double add(double a, double b) {
        return a + b;
    }

    int add(int a, int b, int c) {
        return a + b + c;
    }


public class Main {
    public static void main(String[] args) {
        MathOperations math = new MathOperations();
        System.out.println(math.add(2, 3));         // 调用第一个add方法
        System.out.println(math.add(2.5, 3.5));     // 调用第二个add方法
        System.out.println(math.add(2, 3, 4));      // 调用第三个add方法
    }
}


  • 代码:eg10.2.2

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // 多态
        myDog.sound(); // 调用Dog类的sound方法
    }
}


  • 代码:eg10.3.1

class Person {
    String name;

    Person(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person[name=" + name + "]";
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person("Alice");
        System.out.println(person.toString()); // 调用Object类的toString方法
    }
}


  • 代码:eg10.3.2

class Animal {
}

public class Main {
    public static void main(String[] args) {
        Class<?> animalClass = Animal.class;
        System.out.println("Class Name: " + animalClass.getName());
    }
}


  • 代码:eg10.1-14

class Parent {
    void parentMethod() {
        System.out.println("Parent method");
    }
}
 
class Child extends Parent {
    void childMethod() {
        System.out.println("Child method");
    }
}
 
public class Main {
    public static void main(String[] args) {
        Parent parent = new Child(); // 向上转型
        parent.parentMethod(); // 调用父类方法,安全
 
        // Child child = parent; // 编译错误:不能直接向下转型
 
        if (parent instanceof Child) {
            Child child = (Child) parent; // 向下转型,确保安全
            child.childMethod(); // 调用子类方法
        }
 
        // 错误示例:
        // Parent wrongParent = new Parent();
        // Child wrongChild = (Child) wrongParent; // 运行时错误:ClassCastException
    }
}


  • 代码:10.4.1

class Animal {
    void sound() {
        System.out.println("Animal sound");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog(); // 向上转型
        animal.sound(); // 调用Dog的sound方法

        Dog dog = (Dog) animal; // 向下转型
        dog.sound();
    }
}


  • 代码:eg10.4.2

class Animal {
    String name = "Animal";

    void sound() {
        System.out.println("Animal sound");
    }
}

class Dog extends Animal {
    String name = "Dog";

    void sound() {
        super.sound(); // 调用父类的方法
        System.out.println("Dog barks");
    }

    void displayNames() {
        System.out.println("Name in Dog: " + name);
        System.out.println("Name in Animal: " + super.name); // 访问父类的属性
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.sound(); // 调用覆盖的方法,并使用super调用父类方法
        dog.displayNames(); // 显示子类和父类的name属性
    }
}


  • 代码:eg10.5

class Animal {
    public String publicField = "Public Field";
    protected String protectedField = "Protected Field";
    String defaultField = "Default Field"; // 无修饰符
    private String privateField = "Private Field";

    public void showFields() {
        System.out.println(publicField);
        System.out.println(protectedField);
        System.out.println(defaultField);
        System.out.println(privateField);
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.showFields(); // 访问所有字段
        System.out.println(animal.publicField); // 访问public字段
        System.out.println(animal.protectedField); // 访问protected字段
        System.out.println(animal.defaultField); // 访问default字段
        // System.out.println(animal.privateField); // 错误:private字段不可访问
    }
}


  • 代码:eg10.6

final class FinalClass {
    final void finalMethod() {
        System.out.println("This is a final method.");
    }
}

class AttemptedSubclass /*extends FinalClass*/ { // 错误:无法继承final类
    // void finalMethod() { // 错误:无法覆盖final方法
    //     System.out.println("Trying to override a final method.");
    // }
}

public class Main {
    public static void main(String[] args) {
        final int finalVariable = 10;
        // finalVariable = 20; // 错误:无法更改final变量的值
        System.out.println("Final variable value: " + finalVariable);
    }
}


软件资源: