黑马程序员技术交流社区

标题: 函数调用的问题。 [打印本页]

作者: itisdream    时间: 2014-6-27 10:56
标题: 函数调用的问题。
class A
{
    int x ,y;
    static float f(int a)
    {...}
    float g(int x1,int x2)
    {...}
}
A a1 = new A();
为什么不可以这样调用:A.g(3,2)
又可以这样调用:a1.g(3,2);
作者: jianpan    时间: 2014-6-27 11:13
类A中的g函数不是静态函数只能用A类的对象来调用,不可用类来直接调用。
作者: 燿陚√揚葳    时间: 2014-6-27 11:49
主要是静态函数和非静态函数的区别:
静态方法可以直接被类名所调用
非静态只能是建立了对象,用对象调用非静态方法

可以这么理解,静态先于对象而存在,所以可以直接类名调用。而非静态只有类被加载后建立对象,这时候内存中才有这个方法,才能够被调用
当然了静态方法也可以用对象调用
class Test{
public static void show(){
  System.out.println("static show");
}
public void method(){
  System.out.println("method");
}
}
public class Demo {
public static void main(String[] args){
  
  Test.show();
  Test.method();//这里不能这么写,因为method方法不是静态的
  Test t=new Test();
  t.show();//静态方法也可以用对象调用
  t.method();
}
}

作者: itisdream    时间: 2014-6-27 22:27
理解了,谢谢啦、




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