本帖最后由 ZhangHeng 于 2015-7-7 22:17 编辑
抽象类与一般类的区别
1、抽象类和一般类没有太大的不同。该如何描述事物,还是如何描述事物。只不过,该事物中出现了一些不知道具体内容的方法部分。这些不确定的部分,也是该事物的功能,需要明确出来,但是无法定义主体。通过抽象方法来表示。
2、抽象类比一般类多了个抽象函数。就是在类中可以定义抽象方法。
3、抽象类不可以实例化。
4、抽象类虽然不能创建对象,但是也有构造函数。供子类实例化调用。
注:1、被abstract修饰的函数不能同时被private、final、static修饰。
原因:
final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
private:抽象类中的私有的抽象方法,不被子类所知,就无法被复写。
而抽象方法出现的就是需要被复写。
static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。
可是抽象方法运行没意义。
2、抽象有一个特殊的地方:抽象类中可以不定义抽象方法。这样做可以不让本来实例化,也可以用于模块设计。
如下面的小程序:
- /*
- 需求:获取一段程序的运行时间
- 原理:将程序开始执行到执行结束的时间相减就是程序的运行时间了
- 思路:1、由于想要获取的程序时未知的,可以将其抽象出去,通过子类继承复写的方式获得程序
- 2、利用java中提供的当前时间功能记录下程序开始执行和执行结束的时间,然后相减
- */
- abstract class GetTime
- {
- public final void getTime()//加final表示不能被复写
- {
- long start=System.currentTimeMillis();//开始执行时间
- program();
- long end=System.currentTimeMillis();//执行结束时间
- System.out.println("毫秒"+(end-start));
- }
- abstract void program();//由于程序不确定,故抽象出去
- }
-
- //要获取执行时间的程序
- class GetProgram extends GetTime
- {
- void program()
- {
- for(int x=0;x<1000;x++)
- System.out.print(x+" ");
- }
- }
- class TemplateDemo
- {
- public static void main(String[] args)
- {
- new GetProgram().getTime();
- // System.out.println("Hello World!");
- }
- }
复制代码
|
|