Having inheritance and polymorphism issues with Java(Java 存在继承和多态性问题)
问题描述
I also need a overridden calclatefees method to calculate late fees for overdue movies.
public class Action extends Movie {
protected double latecost;
protected double latefees;
public Action (String title, String rating, int id, int rentTime,
double latecost, double latefees ) {
super(title, rating, id, rentTime);
this.title = title;
this.rating= rating;
this.id = id;
this.rentTime= 8;
this.latecost = 2;
System.out.println( "Overridden " + title + rating + " " + id + " "
+ latecost + " " + latefees);
}
public double calclatefees (double latecost) {
if (rentTime > 3)
latefees = ((rentTime - 3) * latecost);
return latefees;}
@Override
public String toString () {
String x = "Movie: " + title + " is rated " + rating + "
Movie ID number:"
+ id + " late fees are $" + latefees;
return x;
}
}
You need to be using the this keyword. I believe that if you do not and you are using the same names in the constructor, it isn't assigning anything. You are telling the title within the parameter to equal whatever you are assigning it, which in the example below is " not overridden ".
for example
public Movie(String title, String racing, int id, int rentTime){
this.title = " not overridden ";
// probably should be something like this.title = title after debugging.
//etc...
}
The this keyword refers to the current object's data members, so this.title would be the Movie's title, not the parameter member title.
You will need to do this with your set methods above also.
public void rating (String rating) {this.rating = rating;}
edit: try this for constructor
public Movie(String title, String rating, int id, int rentTime){
this.title = " not overridden ";
this.rating = " NR ";
this.id = 0;
this.rentTime = 0;
System.out.println( " overloaded -" + title + rating + id + rentTime);
}
after you see the output, if you want to show the actual values you are passing into the other child classes, you have to change it to this:
public Movie(String title, String rating, int id, int rentTime){
this.title = title;
this.rating = rating;
this.id = id;
this.rentTime = rentTime;
System.out.println( " overloaded -" + title + rating + id + rentTime);
}
这篇关于Java 存在继承和多态性问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java 存在继承和多态性问题
基础教程推荐
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01