【2023级】智能医学工程专业-计算机程序设计-第10章-继承与多态
作者: 阮晓龙 发布时间: 2024/9/13 13:17:51
基本信息:
章节名称:智能医学工程专业-计算机程序设计-第10章-继承与多态
授课教师:信息技术学院互联网技术教学团队
完成时间:2024年09月
适用年级:2023级
适用专业:智能医学工程
文档内容:
讲稿课件(教学版):智能医学工程-计算机程序设计-课件-第10章-继承与多态-教学版.pdf
讲稿课件(笔记版):智能医学工程-计算机程序设计-课件-第10章-继承与多态-笔记版.pdf
讲稿课件(在线版):
学习资源:
代码: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);
}
}软件资源:

