关于Java中的多态问题,高手们进来帮忙分析一下这个程序

来源:百度知道 编辑:UC知道 时间:2024/06/22 07:50:21
高手们进来帮忙分析一下这个程序,越详细越好

import java.util.*;

public class Father {
public void work();
}

class Child1 extends Father {
public void work() {
System.out.println("Child1.work()");
}
}

class Child2 extends Father {
public void work() {
System.out.println("Child2.work()");
}
}

public class Show {
static void action(Father i) {
// ...
i.work();
}
static void actionAll(Father[] e) {
for(int i = 0; i < e.length; i++)
action(e[i]);
}
public static void main(String[] args) {
Father[] dt = new F

程序参照1楼的朋友写的,他的是正确的,我用你贴出来的源程序分析一下:

import java.util.*;
//这里是导入java.util包,util包是一个包含 collection 框架、遗留的 collection 类(常用的集合类)、事件模型、日期和时间设施、国际化和各种实用工具类(详细参照jdk帮助文档)。

//该程序中并未用过任何util包的任何类,所以这行可以去掉

public class Father { //这里是定义了一个father类,访问限限为public(公共的),即任何人都可以声明对该类的对象的引用或访问他的公共成员
public void work();
//这里看来是打算定义一个public权限的无参数方法,这里的写法有点问题,可改为public void work(){};或将Father类声明为abstract类,然后将work方法声明为abstract方法,不过这样意味着Father类,不能实例化,只能被继承,而且继承了Father类的类必须覆盖抽象的work方法

}

//由前后文分析该程序是打算把Father类作为父类,通过Child1,Child2继承他,从而来扩展Father类,以达到复用Father代码的目的

class Child1 extends Father {
public void work() {
System.out.println("Child1.work()");
}
}

class Child2 extends Father {
public void work() {
System.out.println("Child2.work()&quo