- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
import java.util.*;
public class MainFile{
public static void main(String[] args){
ArrayList<TypeExpences> listOfTypes = new ArrayList<TypeExpences>();
Water waterExp = new Water(0, "fafasd", 10, "cubic meters", 2, 1);
listOfTypes.add(waterExp);
System.out.println((listOfTypes.get(0)).getFixed());
}
}
public class Water extends UseExpences{
int pricePer2;
public Water(int kod, String descr, int fixed, String unit, int
pricePer, int pricePer2){
super(kod, descr, fixed, unit, pricePer);
this.pricePer2 = pricePer2;
}
public int getFixed(){
return super.getFixedPrice(fixedPrice);
}
}
public class UseExpences extends TypeExpences{
protected int fixedPrice;
protected String unitOfMeasurement;
protected int pricePerMeasurementUnit;
public UseExpences(int kod, String descr, int fixed, String unit, int
pricePer){
super(kod, descr);
fixedPrice = fixed;
unitOfMeasurement = unit;
pricePerMeasurementUnit = pricePer;
}
public int getFixedPrice(int fixedPrice){
return fixedPrice;
}
}
public class TypeExpences {
protected int code;
protected String description;
public TypeExpences(int kod, String descr){
code = kod;
description = descr;
}
protected int getCode(int code){
return code;
}
protected String getDescription(String description){
return description;
}
}
错误:
C:\Users\laptopara\Desktop\ask>javac MainFile.java
MainFile.java:39: error: cannot find symbol
System.out.println((listOfTypes.get(0)).getFixed());
^
symbol: method getFixed()
location: class TypeExpences
1 error
如果我这样做 System.out.println(waterExp.getFixed());它有效。
如何使其与 System.out.println((listOfTypes.get(0)).getFixed()); 一起使用?
最佳答案
啊是的,我认为你的问题是,你使用多态编程......你有一个对象ArrayList<TypeExpences> listOfTypes
,一个ArrayList
它存储类 TypeExpences
的对象。由于多态编程,还可以存储TypeExpences
的子类的对象。喜欢 Water
.
你现在的问题是,你不能使用子类 Water
中声明的方法。 !您只能使用基类中已声明的方法 TypeExpences
我猜方法public int getFixed()
未声明。
将您的代码更改为此...
ArrayList <Water> listOfTypes = new ArrayList<Water>();
...解决此问题。或者,您可以实现方法 public int getFixed()
在基类TypeExpences
并在子类中重写它。
也许也看看这个tutorial或类似的东西...
编辑
您可以使用这样的界面
public interface AllMyObjects
{
public abstract int getFixed();
}
现在在您使用的每个类中实现此接口(interface),如下所示:
public class Water implements AllMyObjects
{
...
@Override public int getFixed()
{
return super.getFixedPrice(fixedPrice);
}
}
...
public class Phone implements AllMyObjects
{
@Override public int getFixed()
{
...
}
}
在此之后更改您的数组列表,如下所示:
ArrayList <AllMyObjects> listOfTypes = new ArrayList<>();
现在应该可以了,如果不行,请写评论...
关于java - 为什么我不能在 arraylist 中使用 getFixed 方法?我怎样才能让它发挥作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50008440/
import java.util.*; public class MainFile{ public static void main(String[] args){ ArrayList l
我是一名优秀的程序员,十分优秀!