我是java新手,我正在学习抽象类,但我一直停留在一个地方。
我想将不同的数据类型返回到抽象类Bank
,但我不能这样做。我确实引用了 Different return types of abstract method in java without casting这个问题因为我在java方面的经验较少,因此我不明白该链接的解决方案。请任何人帮助我解决这个问题
代码
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());
}
}
错误
test.java:18: error: Union is not abstract and does not override abstract method rateOfInterest() in Bank
class Union extends Bank{ ^ test.java:19: error: rateOfInterest() in Union cannot override rateOfInterest() in Bank
float rateOfInterest(){ ^ return type float is not compatible with int
test.java:20: error: incompatible types: possible lossy conversion from double to float return 9.5; ^ 3 errors
预期输出
The rate of interest of UNION Bank is 9.5
最佳答案
您混淆/混淆了类型。
您的父方法返回类型是int
,并且您在子方法中将其指定为float
。那是行不通的。
将其更改为相同的数据类型。
除此之外,使用double
作为利率而不是 float 利率。这是适合利率的数据类型。
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());
}
}
同样,double 也有浮点,并从此处的讨论中选择最佳数据类型 What is the best data type to use for money in Java app?
关于java - java抽象类中如何返回不同的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48576869/