abstract和static 的功能是要分开说的:使用abstract的作用是为了在父类定义一定的接口,而子类可以实现该接口。作用和 interface类似(个人看法,可能不准确)。 现在提倡的是面向接口编程,这样就很容易实现多态(OO 的一个重要特点)。 等等。 至于static ,就是保证了该方法或者属性,不属于该类的任何一个对象,而属于该类的所有对象共有,保证了唯一性。具体的,请参考<thinking in java>
一般abstract类是不能实例化的,但我们可以调用abstract类中的static方法,不过这不是abstract的特性,这是static的特性,因为不管在什么类中,我们都可以直接使用static方法。 我想搂主说的调用就是这个意思,请看一个简单例子: testAbstract.java ---------------------------------------- public abstract class testAbstract { public void hello(){ System.out.println("hello!"); }
public static void helloo(){ System.out.println("hello0!"); } }-------------------------------------------- test.java public class test { public test(){ } public static void main(String [] args){ testAbstract.helloo();//直接调用abstract类里面的静态方法 } } --------------------- 如果你使用testAbstract te = new testAbstract ()方式,或者使用 testAbstract .hello()非静态调用,将是不允许的!
现在提倡的是面向接口编程,这样就很容易实现多态(OO 的一个重要特点)。
等等。
至于static ,就是保证了该方法或者属性,不属于该类的任何一个对象,而属于该类的所有对象共有,保证了唯一性。具体的,请参考<thinking in java>
我想搂主说的调用就是这个意思,请看一个简单例子:
testAbstract.java
----------------------------------------
public abstract class testAbstract { public void hello(){
System.out.println("hello!");
}
public static void helloo(){
System.out.println("hello0!");
}
}--------------------------------------------
test.java
public class test {
public test(){
}
public static void main(String [] args){
testAbstract.helloo();//直接调用abstract类里面的静态方法
}
}
---------------------
如果你使用testAbstract te = new testAbstract ()方式,或者使用
testAbstract .hello()非静态调用,将是不允许的!
在java中有不少的类设计的时候就是abstract的,但是这些类大多数都提供了一些static的方法,通过这些方法能够获得该类的一个实例,然后就可以正常调用该类的一些abstract的方法如何通过抽象类中的static的方法获得该类的一个实例??抽象类是不能被实例化的
除非是子类
另外楼主说的是可以调用该类的abstract的方法,而不是调用该类的static的方法
但是要想调用abstract的方法,必须要在子类实现吧所以,,不知楼主这段话引用自哪里,感觉本身就说得不对
大家继续讨论讨论吧