gpt4 book ai didi

java - 同一类中的两个构造函数具有不同的参数

转载 作者:行者123 更新时间:2023-12-01 17:34:02 24 4
gpt4 key购买 nike

在第 1 课中,我创建了一个实例:

  db = new AdapterDB (cal, rcarbohydrate, rfat, rprotein, getApplicationContext());

在第 2 课中,我创建了一个实例:

db = new AdapterDB (Bits, Truncation, Crossover, Mutation, Chromosomes, Generation, getApplicationContext());

在 AdapterDB 类中,我创建了构造函数:

private DatabaseHelper DBHelper;
private SQLiteDatabase db;

public AdapterDB(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper (context);
}

double Truncation;
double Crossover;
double Mutation;
int Generation;

private Context context;

int indexOfChromosomes ;
int indexOfGens;
int gensNumber;
int chromosomesNumber;

String [][] population;
double [] fitnesstotal;

public AdapterDB(int Bits, double Truncation, double Crossover, double Mutation, int Chromosomes, int Generation, Context ctx)
{
this.indexOfGens = Bits;
this.Truncation = Truncation;
this.Crossover = Crossover;
this.Mutation = Mutation;
this.indexOfChromosomes = Chromosomes;
this.Generation = Generation;
this.context = ctx;
DBHelper = new DatabaseHelper (context);

population = new String[indexOfChromosomes][indexOfGens];
fitnesstotal = new double [indexOfChromosomes];
}

double cal;
double rcarbohydrate;
double rfat;
double rprotein;

public AdapterDB(double cal, double rcarbohydrate, double rfat, double rprotein, Context ctx)
{
this.cal = cal;
this.rcarbohydrate = rcarbohydrate;
this.rfat = rfat;
this.rprotein = rprotein;
this.context = ctx;
DBHelper = new DatabaseHelper (context);
}

在构造函数中,该值仍然存在,每个变量都有一个值,但是当我想在 AdapterDB 类的某个函数中使用它时,cal、rcarboenchant、rfat 和 r Protein 为零 (0.0) 为什么会发生这种情况?以及如何解决?谢谢。

最佳答案

任何新手程序员都应该牢记的一个好的经验法则是首先拥有类所带来的好处:

What Is A Class? (From the Java Tutorials)

您的 AdapterDB 类显然试图同时成为两个不同的东西。我猜测您调用使用第一个构造函数创建一个实例,但随后期望填充其他值(由第二个构造函数设置)。

您可能应该做的是使 AdapterDB 成为一个抽象类:

public abstract class AdapterDB {

private Context context;
private DBHelper dbHelper;

public AdapterDB(Context context) {
this.context = context;
this.dbHelper = new DBHelper(context);
}

public Context getContext() {
return context;
}

public DBHelper getDBHelper() {
return dbHelper;
}
}

然后,您可以为需要表示的各种数据类型创建单独的类:

public class GeneticAdapter extends AdapterDB {

int chromosomesNumber;
// ... And others

public GeneticAdapter(Context context, int numChromosomes, ...) {
super(context);
// Set your instance variables
}
}

还有健身用的吗?

public class FitnessAdapter extends AdapterDB {
double cal;
// ... And others

public FitnessAdapter(Context context, double cal, ...) {
super(context);
// Set your instance variables
}
}

如果这不是您想要的,我很抱歉,您的问题有点难以理解。祝你好运,如果您有后续行动,请在下面发表评论(或编辑您的答案)。

关于java - 同一类中的两个构造函数具有不同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com