黑马程序员技术交流社区

标题: 函数问题 [打印本页]

作者: 惠晖    时间: 2012-11-1 22:34
标题: 函数问题
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个调用方法为什么不一样 能详细解答下么?
作者: 焦晨光    时间: 2012-11-1 22:39
一个是静态方法 一个是非静态方法
静态方法的调用格式是:类名.方法名
非静态方法的调用格式是:对象名.方法名

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

如果是调用同一个类里的静态方法,直接拿过来用就ok了
就这么简单!~~
作者: 惠晖    时间: 2012-11-1 23:00
你的意思我懂了  如果定义一个叫P的对象   调用就应该是p.show(); 了吧
作者: 林晓泉    时间: 2012-11-1 23:04
惠晖 发表于 2012-11-1 23:00
你的意思我懂了  如果定义一个叫P的对象   调用就应该是p.show(); 了吧

show是本类的静态方法
调用的时候缺省类名
完整的应该是CarDemo.show(new Car());
作者: 惠晖    时间: 2012-11-1 23:05
这上面就是同一个类中所以直接show(q) 直接拿过来用?
作者: 梁胜海    时间: 2012-11-1 23:36
如果一个成员变量是static,那么我们可以通过类名.成员变量名的方式来使用它或者如果一个方法是静态方法,那么我们可以通过类名.方法名来调用。更多详细问题见我的博客,大家共同努力进黑马http://blog.csdn.net/lsh609912726/article/details/8138871
作者: 颜峰    时间: 2012-11-2 02:16
Car 类中的run()方法是非静态方法,调用的时候需要使用该类的实例对象.方法名(); new Car().run()
CarDemo类中的show()方法是静态方法,调用的时候需要使用该类的类名或该类的实例对象调用:CarDemo.show(q)或者new CarDemo().show(q)
在类内部调用本类的静态方法的时候可以省略类名

作者: 邹海洋    时间: 2012-11-2 09:28
本帖最后由 邹海洋 于 2012-11-2 09:35 编辑

static 修饰的方法是随着类的加载而加载,show这个方法里面有未知内容参与运算,这个程序能编译通过吗?  好吧 我试了,可以。




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