欢迎光临
我们一直在努力

12.1【继承完结】Java面向对象编程:深入理解继承、final关键字与组合关系

一、继承⽅式:

在现实⽣活中,事物之间的关系是⾮常复杂,灵活多样,⽐如:

但在Java中只⽀持以下⼏种继承⽅式:

注意:Java中不支持多继承。

时刻牢记,我们写的类是现实事物的抽象。而我们真正在公司中所遇到的项目往往业务比较复杂,可能会涉及到一系列复杂的概念,都需要我们使用代码来表示,所以我们真实项目中

所写的类也会有很多。类之间的关系也会更加复杂。

但是即使如此,我们并不希望类之间的继承层次太复杂。一般我们不希望出现超过三层的继承关系。如果继承层次太多,就需要考虑对代码进行重构了。

如果想从语法上进行限制继承,就可以使用final关键字。

二、final 关键字

final 关键可以用来修饰变量、成员方法以及类。

  • 修饰变量或字段,表示常量(即不能修改)

    1 final int a = 10;

    2 a = 20; //编译出错

  • 修饰类:表示此类不能被继承

    1 final public class Animal {

    2 …

    3 }

    4

    5 public class Bird extends Animal {

    6 …

    7 }

    我们平时是用的 String 字符串类,就是用 final 修饰的,不能被继承。

    public final class String

    implements java.io.Serializable, Comparable<String>, CharSequence,

    Constable, ConstantDesc {

  • 修饰方法:表示该方法不能被重写(后序介绍)

三、继承与组合

和继承类似,组合也是⼀种表达类之间关系的⽅式,也是能够达到代码重⽤的效果。组合并没有涉及到特殊的语法(诸如extends这样的关键字),仅仅是将⼀个类的实例作为另外⼀个类的字段。

继承表⽰对象之间是is-a的关系,⽐如:狗是动物,猫是动物

组合表⽰对象之间是has-a的关系,⽐如:汽⻋

//轮胎类
class Tire{
// …
}

//发动机类
class Engine{
// …
}

// 车载系统类
class VehicleSystem{
// …
}

class Car{
private Tire tire; //可以复用轮胎中的属性和方法
private Engine engine; //可以复用发动机中的属性和方法
private VehicleSystem vs; //可以复用车载系统中的属性和方法
// …
}

// 奔驰是汽车
class Benz extends Car{
//将汽车中包含的:轮胎、发送机、车载系统全部继承下来
}

组合和继承都可以实现代码复⽤,应该使⽤继承还是组合,需要根据应⽤场景来选择。

⼀般建议:能⽤组合尽量⽤组合。

赞(0)
未经允许不得转载:171主机测评 » 12.1【继承完结】Java面向对象编程:深入理解继承、final关键字与组合关系
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址