日期:2014-05-20  浏览次数:20727 次

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

------解决方案--------------------
引用:
构造方法实际上是static ,只不过是隐式的static声明!


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

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

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