簡體   English   中英

即使沒有arg構造函數,隱式超級構造函數也是不確定的?

[英]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構造函數具有默認修飾符-除非HeadBlock位於同一軟件包中,否則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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM