1、继承编程
咱们在建立一些类时,会发现他们之间存在相同的属性和方法,如设计一个动物表示类:
像这样的代码就存在了大量的冗余代码,仔细分析会发现这三个类有相同的eat方法和相同的name属性。从逻辑上分析,Cat和Bird都是Animal,咱们就可让二者继承Animal类,这样Animal就是被继承的类,也叫父类,基类或者超类,而Bird和Cat叫子类或者派生类。他们之间就构成了继承关系。
继承的语法规则:
1.继承使用extends指定父类。
2.在Java中,一个子类只能继承一个父类。
3.子类会继承父类全部public的方法和字段,而对于父类中全部private的方法和字段是没法访问的。
4.子类能够用super关键字获得父类实例的引用。ide
上面的代码使用继承改编后以下:oop
经过上述代码咱们能够看出继承能够使代码达到重用的效果。
但若是把name改为private时,子类就没法访问父类。
如图:
可是若是使用public就违背了oop语言三大特性之一:封装,因此把字段改成protected是最佳的解决办法。看以下代码
分析上述代码报错的缘由能够知道其余包中的类,对于protected修饰的字段和方法不能够访问,对于类的调用者来讲,protected修饰的字段和方法也是不能够访问的。this
此外,若是用final关键字修饰类,这个类也是不能被继承的。看以下代码:设计
2、组合3d
和继承相似,组合也能达到代码重用的效果。组合表示has- a,继承表示is- a,如用一个类表示学校,学校里有学生也有老师,示例以下:对象
3、多态blog
动态绑定也叫运行时绑定即多态,发生动态绑定的前提是:
1.向上转型,父类引用子类对象
向上转型的三种状况:
(1)直接赋值
(2)方法传参
(3)方法返回
2.子类和父类有同名的覆盖方法
3.经过父类的引用,调用该重写方法
以下就是动态绑定的实例:
运行结果:
那么使用多态有什么好处呢?
1.下降了类的调用者对类的使用成本
2.下降了圈复杂度,避免了使用大量的if-else
3.可扩展能力更强
注意super和this的区别,super表示父类对象的引用,this表示当前对象的引用。继承
4、抽象类接口
为了使代码可以被继承,须要创造抽象类。好比创造一个抽象类表示形状:
抽象类不能被实例化,抽象方法也不能是private,抽象类中也能够包含其余非抽象类方法及字段。
5、接口
接口是抽象类的更进一步,包含的方法都是抽象方法,字段只能包含静态常量。一个类能够继承一个类,而且同时实现多个接口。如:
(1)接口使用interface来实现
(2)接口中的方法必定是抽象方法,所以能够省略abstract
(3)接口中的方法必定是public,所以能够省略public
(4)接口不能单独被实例化
(5)接口能够继承一个接口
刚涉及Java语言的面向对象编程,还有不少深邃的东西没有挖掘出来,有待后续。