Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA定义方法时遇到困难_Java_Methods_Import_Package_Subclass - Fatal编程技术网

JAVA定义方法时遇到困难

JAVA定义方法时遇到困难,java,methods,import,package,subclass,Java,Methods,Import,Package,Subclass,我有一个类Mappa,它有一个同名的方法,可以创建两个矩阵 package mappa.product; import mappa.Settore; public class Mappa { private Name mappaName; private final Settore [][] settore; private int Matrice [][]; private static final int X=23; private static

我有一个类Mappa,它有一个同名的方法,可以创建两个矩阵

package mappa.product;

import mappa.Settore;

public class Mappa {
    private Name mappaName;
    private final Settore [][] settore;
    private int Matrice [][];
    private static final int X=23;
    private static final int Y=14;
    public Mappa (){
        settore = new Settore[X][Y];
        for (int i=0; i < X; i++){
            for (int j=0; j<Y; j++) {
                settore[i][j] = new Settore (i,j);
            }
        }
        Matrice = new int[23][14];
    }



    public int[][] getMatrice() {
        return Matrice;
    }

    public void setMatrice(int matrice[][]) {
        Matrice = matrice;
    }

    public Name getMappaName() {
        return mappaName;
    }

    public void setMappaName(Name mappaName) {
        this.mappaName = mappaName;
    }
    public Settore[][] getSettori(){
        return settore;
    }
    public void addSettori(){
        Settore.add(settore);
    }


}
但是,当我在方法MapPacCreator中写入它时,我得到警告:未使用局部变量的值,错误mappa无法解析,或者不是子类MapPaFermCreator的方法MapPaFermCreator中的字段

package mappa.creator;
import mappa.product.*;
public class MappaCreator {
        public MappaCreator(){
            Mappa mappa = new Mappa();//The value of the local variable is not used
        }
}
package mappa.creator;

import mappa.product.*;

public class MappaFermiCreator extends MappaCreator {

    public MappaFermiCreator() {
        Mappa mappa = new MappaFermi();
        this.mappa=mappa;//mappa cannot be resolved or is not a field
    }


}
MappaCreator及其子类MappaFermiCreator都没有实例变量mappa,因此无法编译。将其添加到超类MapPacCreator

受保护的Mappa-Mappa

或者将此添加到MappaFermiCreator

package mappa.creator;
import mappa.product.*;
public class MappaCreator {
        public MappaCreator(){
            Mappa mappa = new Mappa();//The value of the local variable is not used
        }
}
package mappa.creator;

import mappa.product.*;

public class MappaFermiCreator extends MappaCreator {

    public MappaFermiCreator() {
        Mappa mappa = new MappaFermi();
        this.mappa=mappa;//mappa cannot be resolved or is not a field
    }


}
私人Mappa Mappa

在这个方法中,mappa是一个局部变量,因为它是构造函数的唯一一行,所以永远不会使用这个变量

this.mappa从未声明,因此无法解析

您不应该在子类中复制超类的逻辑。避免这种情况的一种方法是使用super,以便使用在super类中定义的功能

public class MappaCreator 
{
    private Mappa mappa;

    public MappaCreator(Mappa mappa)
    {
            this.mappa = mappa;
    }

    public MappaCreator()
    {
            this(new Mappa());
    }
}


public class MappaFermiCreator extends MappaCreator 
{
    public MappaFermiCreator() 
    {
        super(new MappaFermi());
    }
}
这假设MappaFermi扩展了Mappa

public MappaFermiCreator() {
        Mappa mappa = new MappaFermi();
        this.mappa=mappa;//mappa cannot be resolved or is not a field
    }
public class MappaCreator 
{
    private Mappa mappa;

    public MappaCreator(Mappa mappa)
    {
            this.mappa = mappa;
    }

    public MappaCreator()
    {
            this(new Mappa());
    }
}


public class MappaFermiCreator extends MappaCreator 
{
    public MappaFermiCreator() 
    {
        super(new MappaFermi());
    }
}