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

一抽象类-abstract、

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

细节:

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

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

3、abstract只能修饰类和方法

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

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

示例代码如下:

java 复制代码
public class Abstract01 {
    public static void main(String[] args){
        abstract2 a = new abstract2(200);
        a.hi();
    }
}

abstract class abstract1{

    private int a;

    abstract1(int a){
        this.a = a;
    }

    public abstract void hi();

}

class abstract2 extends abstract1{
    private int b;
    abstract2(int b){
        super(2);
        this.b = b;
    }
    public void hi(){
        System.out.println("hi");
    }
}

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

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

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

示例代码如下:

java 复制代码
public class Abstract01 {
    public static void main(String[] args){
        A a = new A();
        B b = new B();
        a.getTime();
        b.getTime();
    }
}

abstract class Stencil{
    public abstract void job();
    public String calTime(){
        long time = System.currentTimeMillis();
        job();
        long time2 = System.currentTimeMillis();
        return "执行时间为: "+(time2 - time);
    }
}


class A extends Stencil{
    public void job(){
        for (float i=0;i<1000000000;i++){
            i+=i;
        }

    }

    public void getTime(){
        System.out.println("A的工作"+calTime());
    }
}

class B extends Stencil{
    public void job(){
        for (long i=0;i<1000000000;i++){
            i*=i;
        }
    }
    public void getTime(){
        System.out.println("B的工作"+calTime());
    }
}
相关推荐
wjs20242 小时前
状态模式(State Pattern)
开发语言
我命由我123452 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
liulilittle2 小时前
C++ TAP(基于任务的异步编程模式)
服务器·开发语言·网络·c++·分布式·任务·tap
励志要当大牛的小白菜4 小时前
ART配对软件使用
开发语言·c++·qt·算法
武子康4 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
爱装代码的小瓶子6 小时前
数据结构之队列(C语言)
c语言·开发语言·数据结构
YuTaoShao7 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
源码_V_saaskw7 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
Maybe_ch7 小时前
.NET-键控服务依赖注入
开发语言·c#·.net
超浪的晨7 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发