class A { abstract void study(){} }
这种定义方法是错误的;应该定义为:
abstract class A { abstract void study(){} }
2.抽象类与抽象方法都必须被abstract关键字修饰
3.抽象类不可以用new创建对象,因为调用抽象方法没意义。
4.抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法,建立子类对象调用,如果子类中只覆盖了部分抽象方法,那么该子类还是一个抽象类.
例如————
abstract class Student { abstract void study1(){} abstract void study2(){} }
class BaseStudent extends Student { void study1(){} }
上面这个例子的这样写法是不正确的,因为父类中有两个抽象方法,而子类中只覆写了一个,因此子类依然有一个抽象方法,抽象方法只能定义在抽象类中,所以子类应该用abstract关键字来修饰 或是覆写另一个抽象方法。
在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那时就将不确定的部分暴露出来,由该类的子类去完成。
<span style="font-size:14px;">abstract class GetTime { public final void getTime() { long start = System.currentTimeMillies(); runcode();//不确定的部分,设置成抽象,由子类实现它 long end = System.currentTimeMillies(); System.out.println(end-start); public abstract void runcode(); } }</span>
class SubTime extends GetTime { public void rnucode() { } }