从其他类访问变量

时间:2015-09-01 00:58:33

标签: java class variables object abstract-class

我有一个正在接收用户输入的课程。然后解析结果并存储在我放在下面的这个类中。然后有一个单独的类,它将存储在下面的类中并使用它创建一些东西。我会发布所有类,但是代码行太多了。我已经放在确切的类下面我有一个问题(减去相同类型的其他变量以简化)  我想知道是否有办法从另一个类中的抽象类访问变量。这是我的抽象类:

public abstract class ParsResults {

    public String AnsName;

    public String AnsType;

}

然后我有另一个需要这些变量的类。我只是不确定如何处理它。提前谢谢。

3 个答案:

答案 0 :(得分:0)

  1. 绝对没有办法访问抽象类实例的实例变量,因为它们不能有实例。
  2. 请不要公开实例变量,将它们设为私有并提供getter和setter。
  3. 您的实例变量应以小写字母开头。
  4. 如果您拥有ParsResults的具体子类的实例,则可以使用getter访问其值(请参阅第2点。)。

答案 1 :(得分:-1)

要在类之间共享变量,有三种方法:

    public class Human {

    // instance variables 
    public String name;
    public int age; 

    //constructor, creates an instance of the Human class. 
    public Human(String s, int i){

    name = s;
    age = i;
    }

} 

在这种情况下,您的实例变量是公共的。 所以在另一个类中,当你通过调用:

创建一个Human类的实例时
Human aHuman = new Human(tom, 25);

然后您可以直接访问这两个实例变量。你可以使用:

获得它的价值
String theHumanName = aHuman.name;

您可以使用:

设置其值(更改它)
aHuman.name = "mike";

以上两行仅在您的变量是公开的情况下才有效。 你应该将它们设为私有的原因是为了防止值从类外部改变。因此,如果它们是私有的,那么您可以根据需要创建get和set方法。 以下是应该如何做的:

    public class Human {

    // instance variables 
    private String name;
    private int age; 

    //constructor, creates an instance of the Human class. 
    public Human(String s, int i){

        setName(s);
        setAge(i);
    }

    /**
     * @return the name
     */
     public String getName() {
     return name;
    }

    /**
    * @param name the name to set
    */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the age
     */
    public int getAge() {
        return age;
    }

    /**
     * @param age the age to set
     */
    public void setAge(int age) {
        this.age = age;
}

}

现在从课外,您可以致电:

    String theHumanName = aHuman.getName();       // this a method call, therefore you must have the parentheses 

您可以使用:

设置其值(更改它)
aHuman.setName("mike");

答案 2 :(得分:-2)

您必须实例化该类,但您无法实例化抽象类。 所以首先创建一个不抽象的类,扩展ParsResults,然后实例化这个新类,在你的主中你可以看到这样的变量:

public class NewClass extends ParsResults {

    //...

}


    public static void main(String [] args){

        NewClass nc = new NewClass();

        // ...

        System.out.println(nc.Name);

    }