java中多个类的对象

时间:2017-07-22 15:47:19

标签: java

我正在修改一些旧的Java概念,以解决一个问题。我编写了以下代码,我在同一个类中尝试多个类的创建对象,并使用main中的那些对象调用方法。

class a {
    public void display() {
        System.out.println("inside class a");
        a a1= new a();
    }
}

class b {
    public void display() {
        System.out.println("inside class b");
        b b1= new b();
    }
}

public class one {
    void display() {
        System.out.println("inside class one");
    }

    public static void main(String[] args) {
        one o = new one();
        a1.display();
        b1.display();
        o.display();
    }
}

我得到的对象无法解决错误。我的问题是我需要改变以使上述代码工作。而且,我是否需要始终在main()中声明对象。

任何帮助都将受到高度赞赏

4 个答案:

答案 0 :(得分:0)

是的,您需要在 main()

中声明对象
class a {
    public void display() {
        System.out.println("inside class a");
    }
}

class b {
    public void display() {
        System.out.println("inside class b");
    }
}
public class one {
    void display() {
        System.out.println("inside class one");
    }
    public static void main(String[] args) {
        a a1= new a();
        b b1= new b();
        one o = new one();
        a1.display();
        b1.display();
        o.display();
    }
}

答案 1 :(得分:0)

不知道你想要实现什么,是的,你应该在main函数中创建类a和类b的对象,以使用这些类的实例方法。

package com.stack.overflow;

    class a
    {
        public void display()
        {
            System.out.println("inside class a");
            //a a1= new a();   ---> No need of this line as you can 
   // directly access instance variables and methods directly without 
  // creating any object or you can also use **this** keyword for the same
        }
    }

    class b
    {
        public void display()
        {
            System.out.println("inside class b");
            //b b1= new b();  ---> No need of this line as you can 
   // directly access instance variables and methods directly without 
  // creating any object or you can also use **this** keyword for the same
        }
    }


    public class one 
    {
        void display()
        {
            System.out.println("inside class one");
        }
        public static void main(String[] args) {

            one o = new one();

            a a1=new a();
            b b1=new b();

            a1.display();
            b1.display();
            o.display();

        }
    }

答案 2 :(得分:0)

您可以轻松找到容易混淆的答案 - @ ratul-sharker:a1& b1必须在main。中声明和实例化,以及其他答案,以纠正您的代码。

真正的问题是你的范围概念和变量的生命周期 - 不仅a1b1位于类ab内,而且它们已经在实例化中方法所以他们是本地的。因此,尝试理解字段变量和局部变量之间的区别 - 它们的生命周期和范围大不相同。

直接访问本地变量( 将>在调用方法时实例化)就像要求从现在的未来询问结果。请注意,只要对象处于活动状态,字段变量就会保留,但局部变量将仅在方法调用期间保留。

希望你现在很清楚。

另外,你的问题:

  

我的问题是可以在中创建一个类的对象   同一个班级并从主叫它?

是。因为main是一个静态方法所以它不像非静态方法那样绑定到对象上。静态方法是类级别,而非静态方法是对象级别。您也可以使用非静态方法创建实例。

答案 3 :(得分:0)

我不确定你为什么要那样做,但假设你只是想知道实现这样一个事情的可能性 - 是的,它可以做到。

您可以在同一个类中创建一个类的实例,如下所示:

public class A {
    public static A instance = new A();

    public void display() {
        System.out.println("inside class A");
    }
}

注意上面代码中的static修饰符;它允许您现在从其他地方(类,方法,instance)访问main,如下所示:

A.instance.display();

如果你想知道你是否可以在方法中声明一个变量而不是一个类,并且可以从另一个方法中访问它,那么答案是 - 不,你不能。