我想通過這個程式來理解多級繼承
import java.util.Scanner。
class Student{
public
int rno;
字母stud_name。
學生(int r, String name){
rno = r;
stud_name = name;
}
}
class sports extends Student{
public
int pts;
sports(int rno, String name, int points){//line 16
pts = points;
super(rno,name); /line 18
}
}
class results extends sports{
public
int [] mark = new int[2] 。
int sum =0。
results(int rno, String name, int marks[], int points){
super(rno,name,point)。
this.mark = marks;
}
void display(){
for(int i = 0; i<3; i ){
sum = mark[i];
}
System.out.println("學生姓名。" super.stud_name)。)
System.out.println("Student Roll no" super.rno)。
System.out.println("運動積分。" super.pts)。)
System.out.println("總分:" sum)。
}
}
class Main{
public static void main(String args[]){
Scanner s = new Scanner(System.in)。
int rollno;
int points;
字串名稱。
int[] marks = new int[5] 。
System.out.println("輸入學生姓名")。
name = s.nextLine();
System.out.println("Enter Student roll no")。
rollno = s.nextInt();
for(int i = 0; i<3; i ){
System.out.println("輸入" i "th mark")。
marks[i] = s.nextInt()。
}
System.out.println("Enter Sports pts")。
points = s.nextInt();
results stud = new results(rollno, name, marks, points)。
stud.display()。
}
但是我得到了這些錯誤
Main.java:16: error: constructor Student in class Student cannot be applied to given types; sports(int rno, String name, int points){ ^ 需要:int,String 發現:沒有引數 原因:實際引數和形式引數串列的長度不同 Main.java:18: 錯誤:對super的呼叫必須是建構式中的第一個陳述句 super(no,name)。 ^ 2個錯誤當我試圖解決這個錯誤時,我得到了一個新的疑惑
。1)如果super關鍵字指的是直接的父類,那么我如何能夠從results類訪問變數rno和stud_name(results類的直接父類是sports類而非student類)。如果我理解錯了,results類的直屬父類是student類,那么我如何從results類訪問sports類的變數。
請幫助我解決這個錯誤,我試著在網上搜索解決方案和例子,但我只找到有一個子類的程式。
uj5u.com熱心網友回復:
這個錯誤本身很容易解決,只要把super()的呼叫放在建構式的開頭,就像錯誤資訊所告訴的那樣:
sports(int rno, String name, int points){
super(rno,name)。
pts = points;
然而,在你的代碼中,有很多東西是臭的,我建議你去研究一下:
class results { // no need for inheritance
...
體育運動 sports;
results(int rno, String name, int marks[], int points) {
sports = new Sports(rno, name, points); //初始化該欄位this.mark = marks;
}
void display() {
...
System.out.println("Student Name: " sports.stud_name); // you reach it's fields like this.
}
}
- 你還應該把不同的類定義放在不同的.java檔案中,并研究一下可視性修改器的使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313391.html
標籤:
上一篇:C boost1.72在tcp::socket上重新連接在linux上使用WSAEADDRINUSE拋出例外,但在Windows上作業
