我们来看一下非常简单的代码:
public class MyProg {
public static void main(String[] args)
{
System.out.println("hello world");
}
}
MyProg是一个班级。我的问题是如何从这个类中实例化一个对象?必须在任何类中的构造方法在哪里?是什么原因导致“MyProg”的行为与Java中的任何其他普通类一样。
答案 0 :(得分:2)
如果要创建此类的对象,可以编写new MyProg()
。但这样做没有太大意义,因为这个类不存储数据,也没有非静态方法;所以它的一个目标根本不会有用。
它的构造函数由编译器自动生成。但是如果你不希望这种情况发生,你可以添加自己的构造函数。
学习Java祝你好运。但我不认为在Stack Overflow上提问是最好的开始方式。如果您使用在线Java教程或投资书籍,可能会更好。
答案 1 :(得分:1)
您可以创建一个MyProg:
MyProg myProg = new MyProg();
这是一个完全有效的类,就像任何其他类一样。它没有任何方法,所以它没有做那么多。
您的" main"的特别之处class是告诉JVM只运行main
方法。拥有这样的课程非常普遍:
public class App {
public static void main(String[] args) {
App app = new App();
// do stuff with app
}
}
这是main
方法首先实例化该类对象的情况。请注意main
总是static
,这是与对象取消关联的原因,让您在学习编写第一个Java程序时不必考虑对象。
答案 2 :(得分:1)
您尚未创建该类的对象。如果您没有提供构造函数, Java编译器将添加默认的无参数构造函数。
MyProg(){
//This is the default no argument constructor.
}
关于默认构造函数的更多要点(根据JLS):
如果类不包含构造函数声明,则会自动提供不带参数的默认构造函数 如果该类声明为public,则默认构造函数将隐式赋予访问修饰符public 如果该类被声明为protected,则默认构造函数被隐式赋予访问修饰符protected 如果该类声明为private,则默认构造函数隐式赋予访问修饰符private。
否则,默认构造函数具有默认访问权限隐含的默认访问权限。
要实例化您必须执行的对象:
MyProg myProg = new MyProg();
new运算符通过为新对象分配内存并返回对该内存的引用来实例化一个类。 new运算符还调用对象构造函数。