黑马程序员技术交流社区
标题:
刚学抽象类,总结一下抽象类与一般类的区别,与大家分享
[打印本页]
作者:
ZhangHeng
时间:
2015-7-7 22:16
标题:
刚学抽象类,总结一下抽象类与一般类的区别,与大家分享
本帖最后由 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!");
}
}
复制代码
作者:
ym123456
时间:
2015-7-7 22:17
dingixiaigz
作者:
炎舞霜冬
时间:
2015-7-7 22:28
很厉害啊哈哈
作者:
曹操001
时间:
2015-7-7 22:30
虽说有点水,但是我还是要给你顶一下!
作者:
xuhao3622603
时间:
2015-7-7 22:49
总结的不错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2