工作当中,对于自己的任务范围都能信手拈来,但是更多的基础内容早已消失于记忆,偶尔复习一下是很有必要的,也有利于之后工作的进行。下面就查阅到的内容作一下简要的概括:
继承,简单地说,就是在一个现有类型的基础上,通过增加的新的方法或者重定义已有的方法的方式,产生一个新的类型。它是面向对象三个基本特征---封装、继承、多态的其中之一。说到继承,我们在使用java进行开发的时候都在使用。因为我们定义类又没有明确指定继承自某个类的时候,java会默认继承Object类。
说到java类,我们将它分为三种:
1、类。使用class关键字定义的方法
2、抽象类。使用abstract class组合关键字定义的类
3、接口。使用interface关键字定义的类型,虽然没有用class关键字定义,但是在广义上也属于类的形式的一种。因为具有了类的某些特征。
简单进行了划分之后就应该说说他们的关系了:
类可以继承类,可以继承抽象类,可以实现接口;抽象类可以继承类,可以继承抽象类,可以继承接口;接口只能继承接口。从这些简单的关系可以看出,他们所拥有的“继承”权限是逐步减少的。除了他们之间的简单关系,还需要注意一些地方:类和抽象类只能继承一个类或抽象类,显然这两种情况是互斥的。当然类和抽象类对接口的实现个数没有限制,这里需要说明的是,当类实现接口时要实现它所实现的所有接口里的全部方法,如果继承了抽象类,就要实现父类的所有抽象方法。这一点,抽象类比较特别,可以部分、全部或者不实现继承的接口的方法。
很复杂吧,简单的三个物体,却有着那么多的条件关系,实在令人费解,不够理解多了就不会感到费劲了。当然,构建这样的关系也是有原因的。首先给我们带来了复用的便利,提高了开发效率。这里还需要说明一种情况,那就是组合。组合在开发中随处可见,最简单的也最常见的,就是将一个类的实例作为另一个类的属性成员。为了代码的高效,我们应该这样做:当需要这样的属性成员的成员时才初始化。使用继承和组合的开发模式,是一种增量式的开发,带来的好处是不需要修改原有的代码,这对我们显然是有益的,可以规避开发中因为修改而带来的风险。关于这一点需要我们特别注意,扩展和修改的区别。