java中的静态方法
首先,作为整个java程序起始执行位置的main()方法就是一个静态方法。静态方法不用生成类的实例就可以直接调用,所以main()方法可以直接使用。其次是像System中的print,Integer等在java.lang包中也有定义,(这些包我还没看,不太知道)都是属于静态的方法。
今天写了一个程序,老是提示错误。首先,我在一个类里又写了三个类,并且都是public型的,编译就出现了错误。后来我把那些类都单独拿出来了,分别保存为一个文件,就可以了。我也不知道为什么。其次是那个static把我搞晕了,后来看了书才明白过来。main()方法是静态的,所以它只能调用静态的方法。另外也可以声明类的实例,通过实例调用类的方法。下面举一个例子:

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());
}
}
}
{
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()中调用使用了。
 
                    
                     
                    
                 
                    
                 

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号