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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 惠晖 中级黑马   /  2012-11-1 22:34  /  1863 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Car
{
       
        String color = "红色";
       
        int num = 4;


        void run()
        {

                System.out.println(color+".."+num);
        }
       
}


class  CarDemo
{
        public static void main(String[] args)
        {
          Car c=new Car();
          c.run();  //调用模式为  :对象.对象成员  这里的对象成员为函数(方法)
          Car q =new Car();
          show(q);
          show(new Car());//这个调用方法为为 函数名称(对象)
        }
        public static void show(Car w)
        {
                w.color="black";
                w.num=5;
                w.run();
        }
}
我想问下  这2个应该都是函数吧, 这2个调用方法为什么不一样 能详细解答下么?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

7 个回复

倒序浏览
一个是静态方法 一个是非静态方法
静态方法的调用格式是:类名.方法名
非静态方法的调用格式是:对象名.方法名

一个是类名调用,一个是对象调用

如果是调用同一个类里的静态方法,直接拿过来用就ok了
就这么简单!~~

点评

非静态方法的调用是 对象名.方法名 就是题目中的 show(Car w)嘛? 怎么好像格式不太一样啊?  发表于 2012-11-1 22:54

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
你的意思我懂了  如果定义一个叫P的对象   调用就应该是p.show(); 了吧
回复 使用道具 举报
惠晖 发表于 2012-11-1 23:00
你的意思我懂了  如果定义一个叫P的对象   调用就应该是p.show(); 了吧

show是本类的静态方法
调用的时候缺省类名
完整的应该是CarDemo.show(new Car());
回复 使用道具 举报
这上面就是同一个类中所以直接show(q) 直接拿过来用?
回复 使用道具 举报
如果一个成员变量是static,那么我们可以通过类名.成员变量名的方式来使用它或者如果一个方法是静态方法,那么我们可以通过类名.方法名来调用。更多详细问题见我的博客,大家共同努力进黑马http://blog.csdn.net/lsh609912726/article/details/8138871
回复 使用道具 举报
颜峰 中级黑马 2012-11-2 02:16:08
7#
Car 类中的run()方法是非静态方法,调用的时候需要使用该类的实例对象.方法名(); new Car().run()
CarDemo类中的show()方法是静态方法,调用的时候需要使用该类的类名或该类的实例对象调用:CarDemo.show(q)或者new CarDemo().show(q)
在类内部调用本类的静态方法的时候可以省略类名
回复 使用道具 举报
本帖最后由 邹海洋 于 2012-11-2 09:35 编辑

static 修饰的方法是随着类的加载而加载,show这个方法里面有未知内容参与运算,这个程序能编译通过吗?  好吧 我试了,可以。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马