当前位置: 代码迷 >> J2SE >> main步骤是静态方法,为什么能直接实例化对象?
  详细解决方案

main步骤是静态方法,为什么能直接实例化对象?

热度:8699   发布时间:2013-02-25 21:54:18.0
main方法是静态方法,为什么能直接实例化对象??
举例:
class {
    public static void main(String[] args) {
         Person p = new Person();
    }
}

class Person{}

疑问:
1.main方法是静态方法,在new Person对象是调用Person构造方法,但是Person构造方法不是静态的为什么能直接调用??
2.假设说Java虚拟机给Person构造加了隐士静态方法,但是在静态方法中是不是能使用this引用??

请高手解答!!!!
谢谢!!
虚拟机 java class
Person 是一个类,而你所说的静态方法是本类中(Person)所具有的 方法, new Person 是创建了一个实例 对象,通过实例对象调用本类(Person)的静态方法是可以的,你也可以直接调用,比如
class Person{
public static void fun(){}

public class Demo{
public static void main(String []args){
Person p = new Person();
p.fun();
}
}
引用:
构造方法实际上是static ,只不过是隐式的static声明!


谁都知道new是返回对象的实例
你要弄明白楼主这个题目的意思:static方法只能调用static方法,但是构造方法不是static为什么能static调用(被main调用),这个才是问题的关键。
而不是简单的回答什么没有鱼竿,怎么拿鱼竿钓鱼的问题明显的是:实例方法只能通过对象实例来调用,不是什么static方法里只能调用static方法。没看出来有任何冲突

this 是实例 static中可以创建实例,但不能访问本类的某个已有实例(除非传递进来的),这符合逻辑,static 一个类一个,this一个实例一个

更何况 java里面构造函数前连function关键字都没加,为什么非得把他当个方法看,还要分清楚是不是隐性 静态
  相关解决方案