举例:
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();
}
}
谁都知道new是返回对象的实例
你要弄明白楼主这个题目的意思:static方法只能调用static方法,但是构造方法不是static为什么能static调用(被main调用),这个才是问题的关键。
而不是简单的回答什么没有鱼竿,怎么拿鱼竿钓鱼的问题明显的是:实例方法只能通过对象实例来调用,不是什么static方法里只能调用static方法。没看出来有任何冲突
this 是实例 static中可以创建实例,但不能访问本类的某个已有实例(除非传递进来的),这符合逻辑,static 一个类一个,this一个实例一个
更何况 java里面构造函数前连function关键字都没加,为什么非得把他当个方法看,还要分清楚是不是隐性 静态