【发布时间】:2013-10-16 15:09:06
【问题描述】:
一点背景:
涉及三个类:Tester(main method)、DNASequence(object) 和 ProteinDNA(subclass of DNASequence)。这三个都在同一个包下。
ProteinDNA 的构造函数接受一个对象 DNASequence 和一个整数
public class ProteinDNA extends DNASequence{
public ProteinDNA(DNASequence dna, int startAt){ //this is the constructor
编译类 ProteinDNA 在构造函数中给我一个错误。
Eclipse中的错误是:
"Implicit super constructor `DNASequence()` is undefined.
Must explicitly invoke another constructor"
jGrasp中的错误是:
ProteinDNA.java:16: error:
constructor DNASequence in class DNASequence cannot be applied to given types;
public ProteinDNA(DNASequence dna, int startAt)^{
required: String
found: no arguments
reason: actual and formal argument lists differ in length"
我做错了什么? Tester 类为ProteinDNA 提供一个适当构造的DNASequence 实例。
【问题讨论】:
-
ProteinDNA是一个DNASequence,因此您需要显式调用DNASequence构造函数,因为它似乎没有无参数构造函数。跨度> -
在 DNASequence 中创建无参数构造函数可以解决问题!谢谢!
-
@user1766889:好吧,它会修复编译时错误——但它可能实际上并没有达到你想要的效果。你确定
ProteinDNA应该扩展DNASequence吗?它在其构造函数中接受一个似乎很奇怪并扩展它...... -
这并不太奇怪,因为第二个参数是一个 int,它是 DNASequence 上的索引。所以ProteinSequence 只是DNASequence 类的一部分。这不像是我将超类的整个实例复制到子类的实例中。
标签: java subclass superclass