A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaopi3 初级黑马   /  2015-9-12 15:21  /  498 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

static是静态修饰符,我们都知道主函数是静态的,只能调用静态方法,但是为啥下面程序主函数依然能调用非静态方法呢?
class EncapsulationDemo
{
        public static void main(String[] args)
        {
                Demo c1=new Demo();
                c1.p();       
        }
       
}
class Demo
{
        public void p()
        {
                System.out.println("ok");
        }
}

5 个回复

倒序浏览
主要是主函数是不能调用非静态方法,是正确的。但是楼主的曲解了类Demo,其实例 c1的函数调用,c1.p();其实只是由类Demo来调用,而非通过在main中来调用;   故两者是不同的。   
回复 使用道具 举报 1 0
你说的主函数调用静态方法是在同一个类中,,而此处是类Demo的实例化对象的方法。
回复 使用道具 举报
yanmingwang 发表于 2015-9-12 16:03
主要是主函数是不能调用非静态方法,是正确的。但是楼主的曲解了类Demo,其实例 c1的函数调用,c1.p();其实 ...

主函数只能调用本类的静态方法吗?是不是如果是其他类的静态方法,主函数想调用也只能通过其他类调用?
回复 使用道具 举报
xiaopi3 发表于 2015-9-12 16:27
主函数只能调用本类的静态方法吗?是不是如果是其他类的静态方法,主函数想调用也只能通过其他类调用? ...

是的。因为两个类A与B,不能在A中的main方法里调用B中的静态方法,只能在A中的main中实例了B,再调用。楼主可以写个Demo试下。
回复 使用道具 举报
我也一直很不懂,看 了楼上的,好像是懂非懂了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马