[JAVA] Java基础语法练习34(抽象类-abstract)(抽象类最佳实践-模版设计模式)

527 0
Honkers 2025-3-3 15:14:17 | 显示全部楼层 |阅读模式

一抽象类-abstract、

父类方法不确定性的问题故将该方法设计为抽象类(没有实现的方法),但一般来说被子类继承然后实现

细节:

1、抽象类不可以被实例化

2、抽象类可以不包含抽象方法而且可以有实现的其他非抽象方法

3、abstract只能修饰类和方法

4、如果一个类继承了抽象类,则要实现抽象方法,除非自己也为抽象类

5、抽象方法不能使用private、final和static来修饰,因为抽象方法子类要进行重写

示例代码如下:

  1. public class Abstract01 {
  2. public static void main(String[] args){
  3. abstract2 a = new abstract2(200);
  4. a.hi();
  5. }
  6. }
  7. abstract class abstract1{
  8. private int a;
  9. abstract1(int a){
  10. this.a = a;
  11. }
  12. public abstract void hi();
  13. }
  14. class abstract2 extends abstract1{
  15. private int b;
  16. abstract2(int b){
  17. super(2);
  18. this.b = b;
  19. }
  20. public void hi(){
  21. System.out.println("hi");
  22. }
  23. }
复制代码

二象类最佳实践-模版设计模式、

需求:1)有多个类,完成不同的任务job

          2)要求统计得到各自完成任务的时间

示例代码如下:

  1. public class Abstract01 {
  2. public static void main(String[] args){
  3. A a = new A();
  4. B b = new B();
  5. a.getTime();
  6. b.getTime();
  7. }
  8. }
  9. abstract class Stencil{
  10. public abstract void job();
  11. public String calTime(){
  12. long time = System.currentTimeMillis();
  13. job();
  14. long time2 = System.currentTimeMillis();
  15. return "执行时间为: "+(time2 - time);
  16. }
  17. }
  18. class A extends Stencil{
  19. public void job(){
  20. for (float i=0;i<1000000000;i++){
  21. i+=i;
  22. }
  23. }
  24. public void getTime(){
  25. System.out.println("A的工作"+calTime());
  26. }
  27. }
  28. class B extends Stencil{
  29. public void job(){
  30. for (long i=0;i<1000000000;i++){
  31. i*=i;
  32. }
  33. }
  34. public void getTime(){
  35. System.out.println("B的工作"+calTime());
  36. }
  37. }
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4008
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行