2015-09-01 140 views
-2

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

public abstract class ParsResults { 

    public String AnsName; 

    public String AnsType; 

} 

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

+0

其他班级是否是一个子班级?另外,请遵循Java命名约定('name')。 –

+1

那么如果你从另一个类中扩展这个类,那么这些变量将全部都是可访问的。事实上,因为您将变量设置为“公共”,他们可以在任何地方访问。 –

+0

这没有意义:您从*对象*中获取信息不是来自类,更不是*抽象*类。你的问题是一个[XY问题](http://mywiki.wooledge.org/XyProblem),当你问最好的解决方案是使用完全不同的方法时,如何解决特定的代码问题。仔细考虑一下你的问题,然后告诉我们你究竟想要做什么的细节,而不是你想如何解决它。 –

回答

-2

你必须安装那个类,但是你不能实例化一个抽象类。 所以首先创建一个不是抽象类巫婆延伸ParsResults,然后实例化这个新的类,并在你的主,你可以看到像这样的变量:

public class NewClass extends ParsResults { 

    //... 

} 


    public static void main(String [] args){ 

     NewClass nc = new NewClass(); 

     // ... 

     System.out.println(nc.Name); 

    } 
0
  1. 是绝对没有办法访问的抽象实例的实例变量类,因为它们不能有实例。
  2. 请不要将实例变量设为public,使它们变为private并提供getter和setter。
  3. 您的实例变量应该以小写字母开头。
  4. 如果您有一个具体子类ParsResults的实例,您可以使用getters访问它的值(请参阅第2点)。
-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 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"); 
+0

第三种方法是将数据作为参数传递给构造函数,例如当我创建'aHuman'实例时。 –