黑马程序员技术交流社区

标题: 有关静态函数是否可以调用该类中构造函数的问题 [打印本页]

作者: 燕国庆    时间: 2012-10-18 10:36
标题: 有关静态函数是否可以调用该类中构造函数的问题
用static函数调用被声明为private的构造函数
        
        private Soup(){}
        
        public static Soup makeSout()
        {
                return new Soup();
        }
这个函数可以调用上面的构造函数吗???当static 加载到内存中构造函数是不是还没存在在对内存中?
作者: 丁旭    时间: 2012-10-18 10:49
可以调用上面的构造方法.
使用Soup类时,JVM会把Soup.class文件加载到内存的方法区中,包括构造函数的定义、静态方法的定义。
当程序运行调用静态方法时,会把静态方法压栈到栈区并执行。
当程序运行调用构造方法时,会把构造函数压栈到栈区并执行。
作者: 丁旭    时间: 2012-10-18 11:37
补充几句。
因为静态方法中没有this,在方法体中无法直接通过本类对象使用实例属性,也就是说this.属性无法使用,也就是我们常说的静态方法中不能使用非静态属性。
但我们可以通过new一个实例对象来调用实例属性和实例方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2