Java基础学习——代码复用

1.什么是复用

复用指的是代码的复用,即将编写的类通过组合或继承的方式重新利用

2.复用的方式

  • 组合(has-a 关系)

  • 继承(is-a 关系)

3.组合 

1.什么是组合?

在新类中引入现有的类,组合是代码复用使用频率最高的方式

比如,我们有轮子、玻璃、引擎、坐垫等等,我们就可以简单组装成一辆车。轮子、玻璃、引擎、坐垫我们可以作为现有类,将其通过组合方式构建出一个新的类——

 2.简单代码展示

  • 现有类:Engine

/**
 * @author panyq
 * @since: 2022/3/13 16:43
 * #Description Engine
 */
public class Engine {
    //region 构造器
​
    public Engine() {
        System.out.println("氢氧燃料电池");
    }
​
    //endregion
}
  • 现有类:Wheel

/**
 * @author panyq
 * @since: 2022/3/13 16:33
 * #Description Wheel
 */
public class Wheel {
    //reign 变量
​
    /**
     * 开始使用时间
     */
    private static Long startTime = System.currentTimeMillis();
​
    //endregion
​
    //region 方法
​
    /**
     * 计算车轮使用的时间
     */
    public void runningTime(){
        System.out.println(System.currentTimeMillis() - startTime);
    }
​
    //endregion
}

现有类:Window

/**
 * @author panyq
 * @since: 2022/3/13 16:42
 * #Description Window
 */
public class Window {
    //region 构造器
​
    public Window(int windowFlag) {
        this.windowFlag = windowFlag;
    }
​
    //endregion
​
    //region 变量
​
    /**
     * 窗户标识
     */
    private int windowFlag;
​
    //endregion
​
    //region 方法
​
    /**
     * 输出窗户编号
     */
    public void windowFlag(){
        System.out.println("这是第" + windowFlag + "块窗户");
    }
​
    //endregion
}

新类:将原有的类:Engine,Wheel,Window在新类中引入

/**
 * @author panyq
 * @since: 2022/3/13 16:48
 * #Description Car
 */
public class Car {
    //region 构造器
​
    public Car() {
        wheel = new Wheel();
        engine = new Engine();
        for (int i = 0; i < 4; i++) {
            windows[i] = new Window(i+1);
        }
        System.out.println("这是第" + count++ + "辆车" );
    }
​
    //endregion
​
    //region 成员变量
​
    /**
     * 车辆数量统计
     */
    private static int count = 1;
    /**
     * 轮子
     */
    private Wheel wheel;
    /**
     * 引擎
     */
    private Engine engine;
    /**
     * 窗户
     */
    private Window[] windows = new Window[4];
​
​
    //endregion
​
    //region 方法
​
    /**
     * 查看窗户标识
     */
    public void installWindows(){
        for (int i = 0; i < 4; i++) {
            windows[i].windowFlag();
        }
​
    }
​
    /**
     * 查看轮子的使用时间
     */
    public void wheelRunningTime(){
        wheel.runningTime();
    }
​
    //endregion
​
    public static void main(String[] args) {
        Car car = new Car();
        car.installWindows();
        car.wheelRunningTime();
    }
}
最终输出结果:
氢氧燃料电池
这是第1辆车
这是第1块窗户
这是第2块窗户
这是第3块窗户
这是第4块窗户
1

组合的特点:根据程序的需要通过引入不同的对象组装成新的对象来满足需求

4.继承

1.什么是继承?

从已有类拓展成新类,一般在java中通过extends关键字(继承类或接口继承接口)或implement关键字(继承接口)声明

比如,我们普通的车都是四轮前驱,现在出了一种越野型奥迪车,它前后都有高级引擎,配备了高级减震器。这些特性都是普通车所没有的,同样是行驶,它们表现出的:奥迪车明显速度更快,加速更猛

 2.简单代码展示

现有类:BaseCar

/**
 * @author panyq
 * @since: 2022/3/13 18:19
 * #Description BaseCar
 */
public class BaseCar {
    //region 构造器
​
    public BaseCar() {
        System.out.println("这是普通车");
    }
​
    //endregion
}

新类:AudiCar通过extends关键字继承了BaseCar

/**
 * @author panyq
 * @since: 2022/3/13 18:18
 * #Description AudiCar
 */
public class AudiCar extends BaseCar {
    //region 构造器
​
    public AudiCar() {
        System.out.println("这是前后驱动配备高级缓震的奥迪车");
    }
​
    //endregion
    public static void main(String[] args) {
        AudiCar audiCar = new AudiCar();
    }
}

输出结果:

这是普通车

这是前后驱动配备高级缓震的奥迪车

继承的特点:具备现有类的所有信息(private域除外),并且可以根据需要进行拓展

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值