• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小不点儿大的由我做主!
流年似水!
博客园    首页    新随笔    联系   管理    订阅  订阅

java中的静态方法

       首先,作为整个java程序起始执行位置的main()方法就是一个静态方法。静态方法不用生成类的实例就可以直接调用,所以main()方法可以直接使用。其次是像System中的print,Integer等在java.lang包中也有定义,(这些包我还没看,不太知道)都是属于静态的方法。

       今天写了一个程序,老是提示错误。首先,我在一个类里又写了三个类,并且都是public型的,编译就出现了错误。后来我把那些类都单独拿出来了,分别保存为一个文件,就可以了。我也不知道为什么。其次是那个static把我搞晕了,后来看了书才明白过来。main()方法是静态的,所以它只能调用静态的方法。另外也可以声明类的实例,通过实例调用类的方法。下面举一个例子:

Code
public class Test
{

public static void main(String[] args) 
{
   SObject object1 
= new Circle();
   SObject object2 
= new Cylinder();

   displayobject(object1);
   displayobject(object2);

   }
static void displayobject(SObject object){
    
if (object instanceof Cylinder){
     System.out.println(object.findArea());
    }
else if(object instanceof Circle){
     System.out.println(object.findArea());
    }
   }

把displayobject()方法声明为static,在main里面就可以直接调用了。不过最好的方法是这样:

public class Test
{

public static void main(String[] args) 
{
   SObject object1 
= new Circle();
   SObject object2 
= new Cylinder();

Test t 
= new Test();
   t.displayobject(object1);
   t.displayobject(object2);

   }
void displayobject(SObject object){
    
if (object instanceof Cylinder){
     System.out.println(object.findArea());
    }
else if(object instanceof Circle){
     System.out.println(object.findArea());
    }
   }
}

声明一个Test的实例t,然后调用displayobject()这个方法就行了。

此外,本例中还牵涉到一个类型的问题,这也是java的多态性问题。子类的对象可以付给父类的对象,进而调用其方法。其实是把父类的对象指向了子类的对象,从而能找到父类里具有的方法,但不能调用其子类新定义的方法。像上面这个例子中,SObject<-Circle<-Cylinder,他们有共同的方法findArea()。所以在方法displayobject()中调用使用了。

 

posted @ 2008-09-18 20:37  小不点儿大的由我做主!  阅读(286)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3