我正在尝试创建一个简单的java继承程序以及super和this关键字的使用。在此处显示一个学生在三个主题中的两个学期sem1和sem2的成绩。
我想显示总分,即。 S1T(Sem1总计),S2T(Sem 2总计)以及总计。
//Student Record Keeping System
class Sem1
{
int a,b,c,S1T,S1GT;
Sem1(int a,int b,int c)
{
this.a=a;
this.b=b;
this.c=c;
}
void total()
{
S1T=a+b+c;
S1GT=S1T;
}
void display()
{
System.out.println("S11: "+a);
System.out.println("S12: "+b);
System.out.println("S13: "+c);
System.out.println("S1Total: "+S1T);
System.out.println("S1Gtotal: "+S1GT);
System.out.println("");
}
}
class Sem2 extends Sem1
{
int p,q,r,S2T,S2GT;
Sem2(int p,int q,int r)
{
this.p=p;
this.q=q;
this.r=r;
}
void total()
{
S2T=p+q+r;
S2GT=S2T+S1T;
}
void display()
{
super.display();
System.out.println("S21: "+p);
System.out.println("S22: "+q);
System.out.println("S23: "+r);
System.out.println("S2Total: "+S2T);
System.out.println("S2Gtotal: "+S2GT);
System.out.println("");
}
}
这是主班
class StudentRcd
{
public static void main(String abc[])
{
Sem1 obj = new Sem1(10,20,30);
obj.total();
obj.display();
Sem2 obj1 = new Sem2(20,30,40);
obj1.total();
obj1.display();
}
}
错误:类Sem2中的构造函数Sem2无法应用于给定类型;
{
^
必需:int,int,int
找到:没有参数
原因:实际和正式论点清单的长度不同
请在这里帮助我。
最佳答案
我不认为您真的想要两个单独的课程。除了计算第二学期的总费用外,这两个班级几乎都是相同的。具有一个类的两个单独实例,并分别计算全年总数,可能会更好。
如果您确实想要两个通过继承关联的类,则您要么需要在Sem2的构造函数中调用super(),因为Sem1缺少默认的构造函数。这可能需要您在Sem2的构造函数中提供其他值,因为第1学期的分数不同于第2学期的分数。
class Sem2 extends Sem1
{
int p,q,r,S2T,S2GT;
Sem2( int a, int b, int c, int p,int q,int r)
{
super( a, b, c );
this.p=p;
this.q=q;
this.r=r;
}