Java编程思想(20170818)

继承和组合是java中很是经常使用的两种建立新类型的方法,二者都能提升代码的复用率。html

继承主要是想让子类继承父类的基本特性;组合技术一般用于想在新类中使用现有类的功能,而非它的接口。二者的分别是"IS A"和"HAS A"的关系java

继承:编程

复制代码
class Shape { public void draw() { System.out.println("draw a shape"); } public void erase() { System.out.println("erase"); } } class Square extends Shape { @Override public void draw() { System.out.println("draw a Square"); } public static void main(String[] args) { Square s = new Square(); s.draw(); s.erase(); } }
复制代码

 

组合:ide

复制代码
class Draw { public void draw() { System.out.println("draw"); } } class Erase { public void erase() { System.out.println("erase"); } } class Work { public void work() { new Draw().draw(); new Erase().erase(); } public static void main(String[] args) { new Work().work(); } }
复制代码

 

1、相比于组合,继承有如下优势:spa

一、在继承中,子类自动继承父类的非私有成员(default类型视是否同包而定),在须要时,可选择直接使用或重写。code

二、在继承中,建立子类对象时,无需建立父类对象,由于系统会自动完成;而在组合中,建立组合类的对象时,一般须要建立其所使用的全部类的对象。htm

2、组合的优势:对象

一、在组合中,组合类与调用类之间低耦合;而在继承中子类与父类高耦合。blog

二、可动态组合。继承

总结:

虽然继承是OOP的一大特性,但不少时候并不推荐使用,由于它经常容易使结构复杂化,容易出错。所以,除非咱们确信使用继承会使程序效率最高,不然,不考虑使用它。

那咱们该如何判断是否应该使用继承呢?在java编程思想中提供了一个简单的判断方法,就是在考虑“真的须要向上转型吗?”。

来源;http://www.cnblogs.com/zhisuoyu/p/5270926.html

相关文章
相关标签/搜索