黑马程序员技术交流社区

标题: 关于static的一个问题 [打印本页]

作者: xiaopi3    时间: 2015-9-12 15:21
标题: 关于static的一个问题
static是静态修饰符,我们都知道主函数是静态的,只能调用静态方法,但是为啥下面程序主函数依然能调用非静态方法呢?
class EncapsulationDemo
{
        public static void main(String[] args)
        {
                Demo c1=new Demo();
                c1.p();       
        }
       
}
class Demo
{
        public void p()
        {
                System.out.println("ok");
        }
}
作者: yanmingwang    时间: 2015-9-12 16:03
主要是主函数是不能调用非静态方法,是正确的。但是楼主的曲解了类Demo,其实例 c1的函数调用,c1.p();其实只是由类Demo来调用,而非通过在main中来调用;   故两者是不同的。   
作者: YC匪帮    时间: 2015-9-12 16:11
你说的主函数调用静态方法是在同一个类中,,而此处是类Demo的实例化对象的方法。
作者: xiaopi3    时间: 2015-9-12 16:27
yanmingwang 发表于 2015-9-12 16:03
主要是主函数是不能调用非静态方法,是正确的。但是楼主的曲解了类Demo,其实例 c1的函数调用,c1.p();其实 ...

主函数只能调用本类的静态方法吗?是不是如果是其他类的静态方法,主函数想调用也只能通过其他类调用?
作者: yanmingwang    时间: 2015-9-12 16:36
xiaopi3 发表于 2015-9-12 16:27
主函数只能调用本类的静态方法吗?是不是如果是其他类的静态方法,主函数想调用也只能通过其他类调用? ...

是的。因为两个类A与B,不能在A中的main方法里调用B中的静态方法,只能在A中的main中实例了B,再调用。楼主可以写个Demo试下。
作者: 插兜    时间: 2015-9-12 17:58
我也一直很不懂,看 了楼上的,好像是懂非懂了。




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