Java—面向对象编程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java—面向对象编程相关的知识,希望对你有一定的参考价值。

一、继承

我们在创建一些类时,会发现他们之间存在相同的属性和方法,如设计一个动物表示类:
技术图片
技术图片
技术图片
像这样的代码就存在了大量的冗余代码,仔细分析会发现这三个类有相同的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—面向对象编程的主要内容,如果未能解决你的问题,请参考以下文章

java面向对象编程

Java——面向对象编程

会一点java,有面向对象编程基础,选择入门unity有很大难度吗?应如何有效的入门?

Java---面向对象基础

Java面向对象

我想用java编一个计算器,面向对象编程