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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨华东 中级黑马   /  2012-10-9 14:20  /  2350 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

是否可以从一个static方法内部发出对非static方法的调用?

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1 神马都是浮云

查看全部评分

11 个回复

倒序浏览
不可以。。。。
回复 使用道具 举报
  1. class StaticDemo {
  2.         public static void main(String[] args)
  3.         {
  4.                 StaticDemo sd =new StaticDemo(); //创建该方法所属类的对象,来从static方法中调用非static方法
  5.                 sd.staticDemo();
  6.         }
  7.         public void staticDemo()
  8.         {
  9.                 int y = 0;
  10.                 for(int x= 0;x<10;x++)
  11.                 {
  12.                         y+=x;
  13.                 }
  14.                 System.out.println("y="+y);
  15.         }
  16. }
复制代码
这个是完全可以的,可以建立该方法所属类的对象来调用,有个小代码看看!
结果 y=45

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
静态方法内部只能 访问静态方法或对象的方法
回复 使用道具 举报
完全可以:静态方法引入局部对象,然后通过局部对象调用实例方法。

public class  lok
{
        public static void main(String[] args)
        {
                A a=new A();
                a.show();//主函数为静态的,这属于静态方法调用非静态。
                a.play(a);
        }
}
class A{
       
        void show()
        {
                System.out.println("static A!");
        }
        static void play(A p)
        {
               
                p.show();//同理,引入局部对象,调用非静态。
        }
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
这样的题目!动动手一测试马上就知道!干嘛还要拿来问呢!

评分

参与人数 1技术分 -1 收起 理由
滔哥 -1 鄙视新人,减除一分。

查看全部评分

回复 使用道具 举报
曾浩 中级黑马 2012-10-9 19:20:23
7#
静态方法只能访问静态的成员变量和静态的方法
非静态方法可以访问静态的方法和成员变量
静态方法中不可以定义this super 关键字 因为静态优先对象先存在
调用非静态方法只能是用 对象名.方法名 这种格式  或者用this super
但是静态优先对象 先存在  也就是说 A存在了 但是B还没加载   那A就不可能调用B   

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
建立非静态方法类的对象,用对象调用该方法
回复 使用道具 举报
刘 佳 发表于 2012-10-9 23:09
建立非静态方法类的对象,用对象调用该方法

回答到 点子上了   果然不错啊  顶你
回复 使用道具 举报
曾浩 发表于 2012-10-9 19:20
静态方法只能访问静态的成员变量和静态的方法
非静态方法可以访问静态的方法和成员变量
静态方法中不可以定 ...

咱可以间接  调用嘛    可能 项目里就有这样的 需要呢  嘿嘿
回复 使用道具 举报
当然可以啊
回复 使用道具 举报
杨志 高级黑马 2012-10-10 12:50:31
12#
虽然我被滔哥减了一分!但是我并不是鄙视新人的意思!
我还是要说!你这个问题真的是动手一测试马上就知道答案!
而且自动动手的答案比别人告诉你的印象好深很多!真心觉得这样的问题问起来没意义!
虽然是新人,但是也要严格要求自己的撒!加油吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马