Java关键字abstract抽象-面向对象-Java基础学习(二十六)

1.关键字abstract概念及要点

 

1)abstract:抽象的,可以用来修饰类、方法

2)abstract关键字可以修饰类或方法。

3)abstract类可以扩展(增加子类),但不能直接实例化。

4)abstract方法不在声明它的类中实现,但必须在某个子类中重写。

5)采用 abstract 方法的类本来就是抽象类,并且必须声明为 abstract

6)abstract 类不能实例化。

7)仅当 abstract 类的子类实现其超类的所有 abstract 方法时,才能实例化 abstract 类的子类。这种

称为具体类,以区别于 abstract类。

8)如果 abstract 类的子类没有实现其超类的所有 abstract 方法,该子类也是 abstract 类。

9)abstract 关键字不能应用于 staticprivate 或 final 方法,因为这些方法不能被重写,因此,不能

子类中实现。

10)final 类的方法都不能是 abstract,因为 final 类不能有子类。

 

 2.abstract修饰类:抽象类

 

1)不可被实例化

2)抽象类有构造器 (凡是类都有构造器)

3)抽象方法所在的类,一定是抽象类。

4)抽象类中可以没有抽象方法。

5)当我们设计一个类,不需要创建此类的实例时候,就可以考虑将其设置为抽象的,由其子类实现这个

的抽象方法以后,就行实例化 

 

3.abstract修饰方法:抽象方法

 

1)格式:没有方法体,包括{}.如:public abstract void eat();

2)抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。

3)若子类继承抽象类,并重写了所有的抽象方法,则此类是一个"实体类",即可以实例化

4)若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象

的!

  1. 模板方法的设计模式
  2. //模板方法设计模式
  3. public class TestTemplate {
  4. public static void main(String[] args) {
  5. new SubTemplate().spendTime();
  6. }
  7. }
  8. abstract class Template {
  9. public abstract void code();
  10. public void spendTime() {
  11. long start = System.currentTimeMillis();
  12. this.code();
  13. long end = System.currentTimeMillis();
  14. System.out.println("花费的时间为:" + (end - start));
  15. }
  16. }
  17. class SubTemplate extends Template {
  18. public void code() {
  19. boolean flag = false;
  20. for(int i = 2;i <= 10000;i++){
  21. for(int j = 2;j <= Math.sqrt(i);j++){
  22. if(i % j == 0){
  23. flag = true;
  24. break;
  25. }
  26. }
  27. if(!flag){
  28. System.out.println(i);
  29. }
  30. flag = false;
  31. }
  32. }
  33. }

 

weinxin
我的微信
有问题微信找我
DannyWu

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: