码迷,mamicode.com
首页 > 编程语言 > 详细

Java—面向对象编程

时间:2020-04-07 00:02:56      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:动物   abstract   传参   指定   编程   很多   img   访问   cat   

一、继承

我们在创建一些类时,会发现他们之间存在相同的属性和方法,如设计一个动物表示类:
技术图片
技术图片
技术图片
像这样的代码就存在了大量的冗余代码,仔细分析会发现这三个类有相同的eat方法和相同的name属性。从逻辑上分析,Cat和Bird都是Animal,我们就可以让两者继承Animal类,这样Animal就是被继承的类,也叫父类,基类或者超类,而Bird和Cat叫子类或者派生类。他们之间就构成了继承关系。
继承的语法规则:
1.继承使用extends指定父类。
2.在Java中,一个子类只能继承一个父类。
3.子类会继承父类所有public的方法和字段,而对于父类中所有private的方法和字段是无法访问的。
4.子类可以用super关键字得到父类实例的引用。

上面的代码使用继承改编后如下:
技术图片

技术图片
通过上述代码我们可以看出继承可以使代码达到重用的效果。
但如果把name改成private时,子类就无法访问父类。
如图:技术图片
但是如果使用public就违背了oop语言三大特性之一:封装,所以把字段改为protected是最佳的解决办法。看如下代码
技术图片
分析上述代码报错的原因可以知道其他包中的类,对于protected修饰的字段和方法不可以访问,对于类的调用者来说,protected修饰的字段和方法也是不可以访问的。

此外,如果用final关键字修饰类,这个类也是不能被继承的。看如下代码:
技术图片


二、组合

和继承类似,组合也能达到代码重用的效果。组合表示has- a,继承表示is- a,如用一个类表示学校,学校里有学生也有老师,示例如下:
技术图片


三、多态

动态绑定也叫运行时绑定即多态,发生动态绑定的前提是:
1.向上转型,父类引用子类对象
向上转型的三种情况:
(1)直接赋值
技术图片
(2)方法传参
技术图片
(3)方法返回
技术图片
2.子类和父类有同名的覆盖方法
3.通过父类的引用,调用该重写方法
如下就是动态绑定的实例:
技术图片
技术图片
运行结果:
技术图片
那么使用多态有什么好处呢?
1.降低了类的调用者对类的使用成本
2.降低了圈复杂度,避免了使用大量的if-else
3.可扩展能力更强
注意super和this的区别,super表示父类对象的引用,this表示当前对象的引用。


四、抽象类

为了使代码能够被继承,需要创造抽象类。比如创造一个抽象类表示形状:
技术图片

抽象类不能被实例化,抽象方法也不能是private,抽象类中也可以包含其他非抽象类方法及字段。
技术图片


五、接口

接口是抽象类的更进一步,包含的方法都是抽象方法,字段只能包含静态常量。一个类可以继承一个类,并且同时实现多个接口。如:
技术图片技术图片
技术图片

(1)接口使用interface来实现
(2)接口中的方法一定是抽象方法,因此可以省略abstract
(3)接口中的方法一定是public,因此可以省略public
(4)接口不能单独被实例化
(5)接口可以继承一个接口

刚涉及Java语言的面向对象编程,还有很多深邃的东西没有挖掘出来,有待后续。

Java—面向对象编程

标签:动物   abstract   传参   指定   编程   很多   img   访问   cat   

原文地址:https://blog.51cto.com/14632675/2485191

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!