我正在修改一些旧的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()中声明对象。
任何帮助都将受到高度赞赏
答案 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。中声明和实例化,以及其他答案,以纠正您的代码。
真正的问题是你的范围概念和变量的生命周期 - 不仅a1
和b1
位于类a
和b
内,而且它们已经在实例化中方法所以他们是本地的。因此,尝试理解字段变量和局部变量之间的区别 - 它们的生命周期和范围大不相同。
直接访问本地变量( 将>>在调用方法时实例化)就像要求从现在的未来询问结果。请注意,只要对象处于活动状态,字段变量就会保留,但局部变量将仅在方法调用期间保留。
希望你现在很清楚。
另外,你的问题:
我的问题是可以在中创建一个类的对象 同一个班级并从主叫它?
是。因为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();
如果你想知道你是否可以在方法中声明一个变量而不是一个类,并且可以从另一个方法中访问它,那么答案是 - 不,你不能。