使用在另一个类

时间:2018-03-03 15:45:43

标签: java class public instances

我刚开始使用Java并遇到了一个问题:

让我们说我想要3个班级,我们称之为#34;汽车"一个是"数据库"一个是稍后进行处理的GUI(Jframe-Form,Swing):

public class Cars {
    int nummer;
    String name;

    //lets just say i have 10 differnet types from 0  - 9 and every type has 
    // a different priceclass between 1 and 10 to make things simple

    public int[] types = new int[10];

    public Cars(int nr, String na) {
        this.nummer = nr;
        this.name = na;

我现在想要在某种数据库中创建和保存汽车,不知道如何在Java中最有效地做到这一点所以我只是创建了这样的类:

public class Beispieldatenbank {

    public Cars[] c;

    public Beispieldatenbank (Cars[] c) {
        this.c = c;
    }

    public int getLengthc() {
        return(this.c.length);
    }

现在我想创建一个包含几辆汽车的数据库,并根据价格确定类型。

public static void main(String[] args) {
    Cars[] c1 = new Cars[100];
    Beispieldatenbank Beispieldatenbank1 = new Beispieldatenbank(c1);

    Cars Audi = new Cars(1, "Audi");
    Beispieldatenbank1.c[1] = Audi;
    Audi.type[0] = 1; //So the 0th type-Audi shall be in price class "1"
            Audi.types[1] = 3; //similarly...


    Cars BMW = new Cars(2, "BMW");
    Beispieldatenbank1.c[2] = BMW;
    BMW.type[0] = 5;

    etc...

我想要" Beispieldatenbank1"成为唯一一个可公开访问的" Beispieldatenbank"我现在在我的GUI中:

           JButton btnEingabe = new JButton("Eingabe");
    btnEingabe.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String s = textField.getText();
            for(int i = 1, i < *Beispieldatenbank1.c.length()*, i++){
                ...              

我现在想检查输入是否与其中一辆车匹配,看看是否&#34;奥迪&#34;例如输入但是:

我在另一个(GUI)课程中,无法访问我的Beispieldatenbank1!

这是因为&#34; Beispieldatenbank1&#34;只会在以后的主要方法中创建&#34; Beispieldatenbank&#34;因此,在我的GUI的actionPeformed中找不到/不存在?我想是因为&#34; Beispieldatenbank1&#34;是公开的,它可以从所有其他类访问?如何解决这个问题,轻松实现这个数据库?是什么原因它不存在/可访问?

2 个答案:

答案 0 :(得分:0)

public类意味着您可以从任何其他类中引用它 这并不意味着可以在没有变量引用的情况下访问此公共类的所有实例。 这没有任何意义,因为我们无法区分不同类的实例。

您的Gui类应该在Beispieldatenbank方法中创建main()实例的字段中存储

答案 1 :(得分:0)

  

我想要&#34; Beispieldatenbank1&#34;成为唯一的,可公开访问的&#34; Beispieldatenbank&#34;

的实例

如果您希望可以访问该字段,则需要一个字段

private static Beispieldatenbank Beispieldatenbank1;

public static void main(String[] args) {
    Cars[] c1 = new Cars[100];
    Beispieldatenbank1 = new Beispieldatenbank(c1);

    // now you can access the variable class-wide

你需要&#34;单身模式&#34;只能使一个类的实例

  

我在另一个(GUI)课程中,无法访问我的Beispieldatenbank1!

每当构建GUI类时,您都需要通过构造函数或某些setter方法传递变量

另外,请不要大写变量名称