Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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_Android_Oop - Fatal编程技术网

Java 在哪里初始化对象?

Java 在哪里初始化对象?,java,android,oop,Java,Android,Oop,我正在尝试创建一个计算器应用程序,它存储按钮被按下的频率,然后用这些信息执行各种任务。我认为最好创建一个单独的java文件,其中包含所有要引用的对象及其信息。调用以前在主活动中设置的对象时遇到一些问题。我知道我必须初始化对象,但我不知道在哪里初始化,也不知道是否可以在一个类中创建多个对象 公共类价格对象{ public class valuesA { public int freqDayA = 0; public int freqWeekA = 0; public int

我正在尝试创建一个计算器应用程序,它存储按钮被按下的频率,然后用这些信息执行各种任务。我认为最好创建一个单独的java文件,其中包含所有要引用的对象及其信息。调用以前在主活动中设置的对象时遇到一些问题。我知道我必须初始化对象,但我不知道在哪里初始化,也不知道是否可以在一个类中创建多个对象

公共类价格对象{

public class valuesA {
    public int freqDayA = 0;
    public int freqWeekA = 0;
    public int totalDayA = freqDayA*2;
    public int totalWeekA = freqWeekA*2;
}

public class valuesB {
    int freqDayB = 0;
    int freqWeekB = 0;
    int totalDayB = freqDayB*3;
    int totalWeekB = freqWeekB*3;
}
public class valuesC {
    int freqDayC = 0;
    int freqWeekC = 0;
    int totalDayC = freqDayC*4;
    int totalWeekC = freqWeekC*4;
}
public class valuesD {
    int freqDayD = 0;
    int freqWeekD = 0;
    int totalDayD = freqDayD*5;
    int totalWeekD = freqWeekD*5;
}
public class valuesCustom {
    int freqDayCustom = 0;
    int freqWeekCustom = 0;
    int totalDayCustom = freqDayCustom*40;
    int totalWeekCustom = freqWeekCustom*40;
}
}

这段代码好吗?还是我应该把它全部保存在main活动中?
谢谢

在这里,您已经在类中创建了一个类,这不是编写OOPS代码的最佳方式。最好的方法是在一个类中创建两个类,通过创建不同的方法来放置所有的计算器逻辑,如

public class Calculator{

  public void Sum(){
  // Enter the logic
  }

  public void diff(){
  // Enter the login
  }
}
现在创建一个主类,在其中创建calculator类的对象,并从该对象访问不同的方法,如Sum和diff

public class mainClass(){
  public static void main(string args[]){
    Calculator obj = new Calculator(); // Object creation
    obj.Sum(); // Accessing the sum method
  }
}

这样你就可以做到。这不是完整的代码,但这是oops中所有人都遵循的方法。在这里,您在类中创建了一个类,这不是编写oops代码的最佳方法。最好的方法是在一个类中创建两个类,通过创建不同的方法来放置所有的计算器逻辑,如

public class Calculator{

  public void Sum(){
  // Enter the logic
  }

  public void diff(){
  // Enter the login
  }
}
现在创建一个主类,在其中创建calculator类的对象,并从该对象访问不同的方法,如Sum和diff

public class mainClass(){
  public static void main(string args[]){
    Calculator obj = new Calculator(); // Object creation
    obj.Sum(); // Accessing the sum method
  }
}

这样你就可以做到。这不是一个完整的代码,但这是oops中所有人都遵循的方法,需要研究的东西可能是。其思想是,业务逻辑/对象是模型,实际视图是xml布局文件,“控制”视图的控制器是活动类。看起来,通过使用一些面向对象的设计,您可以稍微清理一下类。特别是你的价值观类。与其为每种值创建一个单独的类,为什么不创建一些可以像这样重用的通用类呢

public class Values {
    public int freqDay = 0;
    public int freqWeek = 0;

    public int totalDay;
    public int getTotalDay(){
       totalDay = freqDay*2;
       return totalDay;
    }

    public int totalWeek;
    public int getTotalWeek(){
       totalWeek = freqWeek*2;
       return totalWeek;
    }
}
这样,如果您希望能够存储多组值,可以将它们保存在如下列表中:

List<Values> myValues = new ArrayList<Values>();
myValues.add(new Values());
List myValues=new ArrayList();
添加(新值());

这些都不是完美的解决方案/代码,但它只是让您更多地思考对象/动态和可重用代码的一点小东西。希望这能给你一个开始寻找的地方

需要研究的可能是。其思想是,业务逻辑/对象是模型,实际视图是xml布局文件,“控制”视图的控制器是活动类。看起来,通过使用一些面向对象的设计,您可以稍微清理一下类。特别是你的价值观类。与其为每种值创建一个单独的类,为什么不创建一些可以像这样重用的通用类呢

public class Values {
    public int freqDay = 0;
    public int freqWeek = 0;

    public int totalDay;
    public int getTotalDay(){
       totalDay = freqDay*2;
       return totalDay;
    }

    public int totalWeek;
    public int getTotalWeek(){
       totalWeek = freqWeek*2;
       return totalWeek;
    }
}
这样,如果您希望能够存储多组值,可以将它们保存在如下列表中:

List<Values> myValues = new ArrayList<Values>();
myValues.add(new Values());
List myValues=new ArrayList();
添加(新值());

这些都不是完美的解决方案/代码,但它只是让您更多地思考对象/动态和可重用代码的一点小东西。希望这能给你一个开始寻找的地方

这就是为什么你有构造函数:@zakir是对的。写一个类值(类以大写字母开头),并用新的或者更适合您的场景的工厂实例化它,以满足您的需要:顺便说一句,没有人需要否决您。你是新手,正在努力学习。不断地问问题,做研究,你就会达到目的您对
totalDayA
等的声明是无用的:将字段的值设置为
freqDayA*2
并不意味着其值始终是
freqDayA
的两倍:它只是将初始值设置为
freqDayA
初始值的两倍,即
2*0
。如果您更改
freqDayA
totalDayA
也不会更改。这就是为什么您有构造函数:@zakir是正确的。写一个类值(类以大写字母开头),并用新的或者更适合您的场景的工厂实例化它,以满足您的需要:顺便说一句,没有人需要否决您。你是新手,正在努力学习。不断地问问题,做研究,你就会达到目的您对
totalDayA
等的声明是无用的:将字段的值设置为
freqDayA*2
并不意味着其值始终是
freqDayA
的两倍:它只是将初始值设置为
freqDayA
初始值的两倍,即
2*0
。如果更改
freqDayA
totalDayA
也不会更改。