当前位置: 首页 > 知识库问答 >
问题:

如何在java抽象类中返回不同的数据类型

应俊爽
2023-03-14

我是java新手,我正在学习抽象课程,但我被困在了一个地方。

我想将不同的数据类型返回到抽象类Bank,但我做不到。我确实在java中参考了抽象方法的不同返回类型,但没有提出这个问题,因为我在java方面的经验较少,因此我不明白该链接的solution.Please有人帮我解决这个问题。

密码

abstract class Bank{
    abstract int rateOfInterest();
}

class Icici extends Bank{
    int rateOfInterest(){
        return 8;
    }
}

class Sbi extends Bank{
    int rateOfInterest(){
        return 7;
    }
}


class Union extends Bank{
    float rateOfInterest(){
        return 9.5;
    }
}


class Interest {
    public static void main(String args[]){
        Bank uni = new Union();
        System.out.println("The rate of interest of UNION Bank is "+uni.rateOfInterest());
    }
}

错误

测试.java:18: 错误: 联合不是抽象的, 不会覆盖抽象方法率对银行的兴趣()

类Union扩展Bank{ ^ test.java:19:错误:Union中的rateofinest()不能重写Bank中的rateofinest()

float rateofinest(){ ^返回类型float与int不兼容

test.java:20:错误:不兼容的类型:从双精度到浮点数的可能有损转换返回9.5;^3错误

预期产出

The rate of interest of UNION Bank is 9.5

共有3个答案

沈翰
2023-03-14

甚至这个解决方案也可以帮助你。正如我在这里提到的,double是更高的类型,它按照你的期望存储int、float值。

abstract class Bank{
    abstract Double rateOfInterest();
}

class Icici extends Bank{
    Double rateOfInterest(){
        return 8d;
    }
}

class Sbi extends Bank{
    Double rateOfInterest(){
        return 7d;
    }
}


class Union extends Bank{
    Double rateOfInterest(){
        return 9.5;
    }
}


class Interest {
    public static void main(String args[]){
        Bank uni = new Union();
        System.out.println("The rate of interest of UNION Bank is "+uni.rateOfInterest());
    }
}

您可以从双倍投射所需的类型。

壤驷阳冰
2023-03-14

在您的银行类中,利息率() 返回整数值,您的利息()利率返回浮点值。

在子类中实现抽象方法时,返回的类型应为较高类型,而不应为较低类型。

为了解决这个问题,您可以将返回类型从int改为float,如下所示

abstract float rateOfInterest();

否则,将返回类型更改为 int,从 Union 类中的浮点数更改为 int,如下所示

int rateOfInterest(){
        return 9;
    }
范翰海
2023-03-14

你混淆了类型。

您的父方法返回类型是int,并且在children中将其作为float。那不行。

在任何地方都将其更改为相同的数据类型。

除此之外,使用Double表示利率而不是浮动。这是利率的合适数据类型。

abstract class Bank{
    abstract double rateOfInterest();
}

class Icici extends Bank{
    double rateOfInterest(){
        return 8;
    }
}

class Sbi extends Bank{
    double rateOfInterest(){
        return 7;
    }
}


class Union extends Bank{
    double rateOfInterest(){
        return 9.5;
    }
}


class Interest {
    public static void main(String args[]){
        Bank uni = new Union();
        System.out.println("The rate of interest of UNION Bank is "+uni.rateOfInterest());
    }
}

再次双精度也有浮点,并从这里的讨论中选择最好的数据类型 什么是在Java应用程序中用于赚钱的最佳数据类型?

 类似资料:
  • 我正在尝试实现和重写具有不同返回类型的方法,而不会被迫转换返回类型。 我的问题:是否可以在不强制强制转换的情况下返回不同的类型?解决这个问题的抽象方法看起来怎么样? 我认为必须有一个解决方案,因为编译器应该知道返回类型...

  • 在那里,我被告知接口和抽象类除了方法签名(名称、参数)和返回类型之外没有实现/方法体,所以通常我们写: 然而,我想知道我们能不能这样写: 因为它表明,当我们创建接口或抽象类时,返回类型可以在方法中

  • 只是延伸问题... 抽象类和接口中的相同方法 假设一个类实现了一个接口并扩展了一个抽象类,两者都有相同的方法(名称签名),但返回类型不同。现在,当我重写方法时,只有当我使返回类型与接口声明相同时,它才会编译。 另外,如果该方法在抽象类或接口中声明为private或final,会发生什么情况? **旁注。在一次采访中,爱因斯坦先生在这个问题上坚持了相当长的时间。有没有一个流行的场景,我们这样做,或者

  • 问题内容: 。 将返回String和int值。因此,我从这些返回值中得出了以下解决方案。 建立课程通话 并进行如下更改。 现在我的问题是,有没有更简单的方法来实现这一目标? 问题答案: 最后,我认为我的方法会更好,因为当返回类型的数量增加时,这种实现会以最佳方式实现。

  • . 将返回字符串和int值。从中获取这些返回值,我想出了以下解决方案。 创建一个类调用返回值 并更改,如下所示。 现在我的问题是,有没有更简单的方法来实现这一点??

  • 我有个愚蠢的问题。我不明白为什么使用Projections的Spring数据存储库方法会产生这个编译错误。 我有一个存储库类 和投影(我有一个大的hibernate连接对象,我只想从中得到几个字段) 当我试图从一个服务调用方法时 我这样调用服务,编译错误就在这里。 我很确定,我这里有一个非常简单的错误...