[英]Superclass overriding Subclass with default values from constructor in Java
I have an assignment and my superclass default values always override the values I pass in the Test main method.我有一个作业,我的超类默认值总是覆盖我在 Test 主方法中传递的值。 In the debugger, i see the passing of the productNumber(1234) and productTitle("Daughter"), but then it's overridden with the default values.
在调试器中,我看到 productNumber(1234) 和 productTitle("Daughter") 的传递,但随后它被默认值覆盖。 Any thoughts, i keep making minor changes, checking for changes, still the same results.
任何想法,我一直在做微小的改变,检查变化,仍然是相同的结果。
Product Superclass产品超类
public abstract class Product {
private int productNumber;
private String productTitle;
//Two constructors required
public Product(){
productNumber = 0;
productTitle = "";
}
public Product(int productNumber, String productTitle) {
this.productNumber = productNumber;
this.productTitle = productTitle;
}
public void setProductNumber(int productNumber) {
this.productNumber = productNumber;
}
public int getProductNumber() {
return productNumber;
}
public void setProductTitle(String productTitle) {
this.productTitle = productTitle;
}
public String getProductTitle() {
return productTitle;
}
//Override toString() required
@Override
public String toString() {
return productNumber + " " + productTitle;
}
// Required Product class declares abstract method with this signature: public String getDisplayText()
public abstract String getDisplayText();
//Override equals() required
@Override
public boolean equals(Object object) {
if (object instanceof Product) {
Product product2 = (Product) object;
if (productNumber == (product2.getProductNumber()) &&
productTitle.equals(product2.getProductTitle())){
return true;
}
}
return false;
}
}
Music Subclass extends Product Superclass音乐子类扩展了产品超类
public class Music extends Product {
private String artist;
private String style;
private String medium;
public Music() {
super();
artist = "";
style = "";
medium = "";
}
public Music(int productNumber, String productTitle, String artist, String style, String medium) {
super();
this.artist = artist;
this.style = style;
this.medium = medium;
}
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
public String getStyle() {
return style;
}
public void setStyle(String style) {
this.style = style;
}
public String getMedium() {
return medium;
}
public void setMedium(String medium) {
this.medium = medium;
}
@Override
public String getDisplayText() {
return super.toString() + " by " + artist + " " + style + " " + medium;
}
@Override
public boolean equals(Object object){
if (object instanceof Music){
Music m = (Music) object;
if (artist.equals(m.getArtist()) &&
style.equals(m.getStyle()) &&
medium.equals(m.getMedium())){
return true;
}
}
return false;
}
}
Print String打印字符串
public class Test {
public static void main(String[] args) {
// Expected result: 1234 Daughter by Pearljam Alternative online
Music music1 = new Music(1234,"Daughter", "Pearljam","Alternative","online");
System.out.println(music1.getDisplayText());
}
}
you are not passing values from subclass to your parentclass您没有将值从子类传递给父类
instead of super() you need to do below -而不是 super() 你需要在下面做 -
super(productNumber,productTitle);
update needed in your code:-您的代码中需要更新:-
public Music(int productNumber, String productTitle, String artist, String style, String medium) {
super(productNumber,productTitle);
this.artist = artist;
this.style = style;
this.medium = medium;
}
You need to pass productNumber
and productTitle
in the super(..., ...)
call inside the Music
constructor up to the parent class.您需要将
Music
构造函数内的super(..., ...)
调用中的productNumber
和productTitle
传递给父 class。
You need to invoke你需要调用
super(productNumber, productTitle)
inside the Music constructor to pass the parameters to its parent.在 Music 构造函数中将参数传递给其父级。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.