Java中代码复用技术
时间:2020-07-22 14:42:05
收藏:0
阅读:60
继承与实现
- 继承:如果多个类的某个部分的功能相同,那么可以抽象出一个类出来,把他们的相同部分都放到父类里,让他们都继承这个类。
- 实现:如果多个类处理的目标是一样的,但是处理的方法方式不同,那么就定义一个接口,也就是一个标准,让他们的实现这个接口,各自实现自己具体的处理方法来处理那个目标。
- 所以,继承的根本原因是因为要复用,而实现的根本原因是需要定义一个标准。
- 在Java中,继承使用
extends
关键字实现,而实现通过implements
关键字。 - Java中支持一个类同时实现多个接口,但是不支持同时继承多个类。
- 在接口中只能定义全局常量(static final)和无实现的方法(Java 8以后可以有defult方法);而在继承中可以定义属性方法,变量,常量等。
面向对象的复用技术
复用性是面向对象技术带来的很棒的潜在好处之一。如果运用的好的话可以帮助我们节省很多开发时间,提升开发效率。但是,如果被滥用那么就可能产生很多难以维护的代码。
Java代码的复用有继承,组合以及代理三种具体的表现形式。
- 继承:继承(Inheritance)是一种联结类与类的层次模型。指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;继承是一种
is-a
关系。 - 组合:组合(Composition)体现的是整体与部分、拥有的关系,即
has-a
的关系。
组合与继承的区别和联系
- 在
继承
结构中,父类的内部细节对于子类是可见的。所以我们通常也可以说通过继承的代码复用是一种白盒式代码复用
。(如果基类的实现发生改变,那么派生类的实现也将随之改变。这样就导致了子类行为的不可预知性;) 组合
是通过对现有的对象进行拼装(组合)产生新的、更复杂的功能。因为在对象之间,各自的内部细节是不可见的,所以我们也说这种方式的代码复用是黑盒式代码复用
。(因为组合中一般都定义一个类型,所以在编译期根本不知道具体会调用哪个实现类的方法)继承
,在写代码的时候就要指名具体继承哪个类,所以,在编译期
就确定了关系。(从基类继承来的实现是无法在运行期动态改变的,因此降低了应用的灵活性。)组合
,在写代码的时候可以采用面向接口编程。所以,类的组合关系一般在运行期
确定。
原文:https://www.cnblogs.com/yysy/p/13358228.html
评论(0)