JAVA定义方法时遇到困难
我有一个类Mappa,它有一个同名的方法,可以创建两个矩阵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
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());
}
}