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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© itisdream 中级黑马   /  2014-6-27 10:56  /  790 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);

3 个回复

倒序浏览
类A中的g函数不是静态函数只能用A类的对象来调用,不可用类来直接调用。
回复 使用道具 举报
主要是静态函数和非静态函数的区别:
静态方法可以直接被类名所调用
非静态只能是建立了对象,用对象调用非静态方法

可以这么理解,静态先于对象而存在,所以可以直接类名调用。而非静态只有类被加载后建立对象,这时候内存中才有这个方法,才能够被调用
当然了静态方法也可以用对象调用
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();
}
}
回复 使用道具 举报
理解了,谢谢啦、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马