3,复用

复用

作为一个语言,都需要面对一个问题,就是复用。有位大牛说过,“不要重复制造轮子”。说的就是,我们的代码要尽可能的复用

已经有的功能、算法,我们为什么要重新再思考一遍,再编写调试一遍?我们只需要拿来用岂不是更好?

如果接触过像C语言这种面向过程设计的语言,你会发现复用很简单。只需要把大家反复执行的代码,用方法提取出来,供大家调用即可。这就是方法复用

但是现在,我们是在Java的世界里,在面向对象的世界里,在类的世界里,所有的方法和功能,都被写到了一个个类中。所以如何复用他们呢?答案是组合和继承


组合

在Java中,类是由属性和方法组成的。

属性都是有数据类型的。除了我们熟知的基本类型外,还可以是引用类型,就是类。

当我的类中,包含了其他类型的属性,我们就称这种关系叫组合

现实中有很多组合的例子,比如笔记本,它虽然是Apple的Macbook,但是却用了Intel的CPU,却用了华硕的主板。

Macbook.java
public class Macbook{
  private Intel cpu = new Intel();
  public void run(){
    cpu.run();
  }
}

Intel.java
public class Intel{
  public void run(){
    System.out.println("Intel is running");
  }
}

所以,当我们生产笔记本时,可以看看,市场上有那些零部件可以采购,然后将它们 组合起来即可。不用自己再研制诸如CPU和内存之类的零件了。

同理,当我们设计类时,可以看看,Java为我们提供了那些类,然后将它们组合到类中作为属性,就可以自己的方法中调用它们的方法,以实现自己想要的功能。这就是组合

Java为我们提供了很多类库,以便我们组合。我们在5,Java常用类进行介绍。


继承

Java提供了一个形象的概念,叫继承extends

孩子继承父母的特征,男人继承人的特征,正方形继承平行四边形的特征。是不是很形象,一点都不牵强。

举个例子,VIP继承自Client,所以VIP就会自动拥有Client拥有的所有特性和功能。

在VIP类中,只需要添加自己有别于一般Client的特征和功能即可。

像下面,在VIP类中,我们添加了借钱方法borrow,这样VIP除了可以取钱,存钱,还可以借钱。

我们在VIP类中,重写了取钱方法draw,让VIP有别于一般Client,可以取出超出自己的存款额的钱。

Client.java
public class Client{
  protected String ID;
  protected int sum;
  public void save(int amount){
    System.out.println("Client "+ this.ID + "is saving " + amount + "$");
    this.sum = this.sum + amount;
  }
  public void draw(int amount){
    System.out.println("Client "+ this.ID + "is drawing " + amount + "$");
    if( this.sum - amount >= 0 ){   
      this.sum = this.sum - amount; 
    }
  }
}

VIP.java
public class VIP extends Client{
  public void borrow(int amount){
    System.out.println("VIP "+ super.ID + "is borrowing " + amount + "$");
    super.sum = super.sum + amount;
  }
  public void draw(int amount){
    System.out.println("VIP "+ super.ID + "is drawing " + amount + "$");
    super.sum = super.sum - amount;
  }
}

注意

1,我们通过super关键字,可以在子类中,调用父类的非private的属性和方法。也就是protected的和public的属性和方法

2,子类最多只能继承一个父类。所以Java是单继承。

3,如何覆盖父类的某些特性?重写。只需在子类中重写父类的方法即可。但final修饰的方法,不可被子类重写


下面我们介绍

4,多态和接口


本节问题:

1,在动物园模拟系统中使用或找到组合和继承,思考为何使用并解释其好处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值