Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何将子类方法转换为超类_Java - Fatal编程技术网

Java-如何将子类方法转换为超类

Java-如何将子类方法转换为超类,java,Java,我有一个子类扩展了一个超类,我在子类中编写的方法(Get Insurance Cost)没有被超类识别。当按下按钮以计算保险成本时,不会发生任何事情,并且在超类中,getinsurance这些词以红色下划线-这意味着它无法找到该方法 if (arg.equals("Calculate Insurance")) { String valueStr = insurancevaluetextField.getText(); value = Double.parseDouble(valu

我有一个子类扩展了一个超类,我在子类中编写的方法(Get Insurance Cost)没有被超类识别。当按下按钮以计算保险成本时,不会发生任何事情,并且在超类中,getinsurance这些词以红色下划线-这意味着它无法找到该方法

if (arg.equals("Calculate Insurance")) {
    String valueStr = insurancevaluetextField.getText();
    value = Double.parseDouble(valueStr);

    add (insuranceDisplayArea); 
    insuranceDisplayArea.setText("The insurance charge for your package is:  $"
            + df.format(getInsurancecost()) + "\n");
}

超类不能从其子类运行方法。但是,可以从子类中调用超类方法。考虑重新设计你的类。

你的描述表明你得到了它: 可以在子类中使用超类的非私有方法
而不是超类中子类的方法。为了使用子类的方法,您必须创建子类的实例。

如果您可以将类
声明为
抽象
,您可以添加

public abstract double getInsurancecost();

这样,您的超类将能够调用由其子类定义的方法。

可能的重复:如果您对超类定义满意,则不必重写
getCharge
。另外,它是getInsurancecost而不是getInsurance FYIII如果您的超类需要有关保险成本的信息,那么字段(及其getter和setter)的正确位置是超类,而不是子类。这似乎是一个设计问题,你真的应该重新考虑。你有一个例子,我可以这样做吗?我在这个问题上纠结了一个多星期,需要一些指导。谢谢,@Joshua,我试过你的建议,但我的ParcelTest文件中有一个错误:Parcel Parcel=new Parcel();“地块是抽象的;无法实例化”如果使用抽象,则无法再实例化地块。。。您必须使用包裹p=新的投保包裹();但我不认为这些都能帮你解决真正的问题:应用程序设计。