【问题标题】:Declare objects in every method? [closed]在每个方法中声明对象? [关闭]
【发布时间】:2017-06-26 02:32:59
【问题描述】:

所以我是 java 新手,但我精通 python,但我遇到了一个基本问题。我是否必须在我将要使用它的相同方法中声明一个对象?或者有没有办法将对象从一个方法转移到另一个方法?感谢您的帮助(:

【问题讨论】:

  • 你的意思是this...?
  • 建议你阅读一些基本的java编程资源/书籍
  • 我建议您展示一段 Python 代码,以演示您想在 Java 中实现的概念。很有可能,会出现精通两种语言的人,并向您展示如何将相同的概念翻译成 Java。
  • 没有人是刻薄的。该网站的性质是对坏问题投反对票,对好问题投赞成票。帮助页面上定义了不好的问题,而您的问题恰好是不好的。 No one is immune from asking bad questions
  • 'bad' 并不意味着它不能被修复,或者你不应该问它但是,你可以通过编辑来修复它。强烈建议您遵循 dasblinenlight 的建议:“我建议您展示一个 Python 代码来演示您想要在 Java 中实现的概念。”目前我们不知道您是要全局传递变量,通过参数,还是方法应该在类上声明。

标签: java object methods


【解决方案1】:

在方法之间传递对象通常是最推荐的方式。这有助于保持代码模块化并减少耦合。 Java 中的一个常见概念是自定义类的 getter 和 setter。请参见下面的示例:

public class MyClass {
    private String myString; // this variable can only be directly access from within MyClass scope.

    // constructor - called when an instance of MyClass is initialized ( e.g. MyClass myClass = new MyClass(); )
    public MyClass(){
        myString = "Hello world!"; // init my_string        
    }

    // Can access variable from within class to print
    public void printMyString(){
        System.out.println(myString);
    }

    // Can set private class variables
    public void setMyString(String input){
        this.myString = input; // set value
    }

    // Can get (return) private class variables
    public String getMyString(){
        return myString; // get value
    }
}

从你程序的另一个部分:

MyClass myClass = new MyClass(); // init class (calls constructor)
System.out.println(myClass.getMyString()); // prints "Hello world!"
myClass.setMyString("Hola"); // changes value of myString
System.out.println(myClass.getMyString()); // prints "Hola"

System.out.println(myClass.myString); // Error: cannot directly access private variable of java class MyClass.

【讨论】:

    【解决方案2】:

    应该在多个方法中可用的变量应该在类的顶部声明如下。

    public class Test{
      int number = 1;
      String text = "hello";
    
      public int method1() {
        return number + 1;
      }
    
      public String method2() {
        return text + " moo";
      }
    }
    

    或者,如果您有另一个与全局变量同名的变量,您可以使用 this.number 之类的名称来引用全局变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-03
      • 2013-03-28
      • 2014-02-23
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 2017-07-20
      • 2014-10-21
      相关资源
      最近更新 更多