[英]implicit super constructor is undefined even with no arg constructor?
所以我是Java的新手,但我收到此錯誤消息,指出構造函數未定義。 我做了一些研究,發現我需要添加一個無參數的構造函數,但是即使這樣做,我仍然會出錯。
import javax.swing.JComponent;
public abstract class Block extends JComponent{
Block(){}
}
這是我暫時還沒有任何東西的超級班
import java.awt.*;
import java.util.Arrays;
import javax.swing.*;
public class Head extends Block{
private int xpos;
private int ypos;
private boolean[] m;
public Head(){
xpos = getWidth()/2;
ypos = getHeight()/2;
}
}
這是給出錯誤的子類:/
您的no-arg構造函數具有默認修飾符-除非Head
和Block
位於同一軟件包中,否則Head
將無法訪問它。 您應該將其定義為public
:
public abstract class Block extends JComponent{
public Block(){}
}
...或至少受保護:
public abstract class Block extends JComponent{
protected Block(){}
}
...或者完全沒有。 這將導致Java隱式創建具有public
訪問權限的無參數的空構造函數:
public abstract class Block extends JComponent{
}
不必在抽象類中沒有參數構造函數...可以有參數化的構造函數,但隨后必須在子類的第一行中調用super()
。此處是示例... 。
import javax.swing.JComponent;
public abstract class Block extends JComponent{
int height, width; // just for example only you can have anything you want
Block(int h, int w){ //you can have anything as per you requirement
height=h; width=w;
}
}
&這是兒童班.....
import java.awt.*;
import java.util.Arrays;
import javax.swing.*;
public class Head extends Block{
private int xpos;
private int ypos;
private boolean[] m;
public Head(int h, int w){
super(h, w); //note this step...you have to call the constructor of super class by using super(..); and remember to pass parameter..
xpos = getWidth()/2;
ypos = getHeight()/2;
}
}
如果您只是默認沒有參數構造函數...您只需替換super(h, w);
與super();
.....認為這會對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.