美文网首页
Java 面向对象三大特性

Java 面向对象三大特性

作者: 沉淀之际 | 来源:发表于2019-04-24 10:55 被阅读0次

    文章引用至 老梁的程序人生 程序进阶:Java三大特性详解

    那么咱们就来以相对简单的封装开始,在上一篇文章中老梁介绍了封装的意义---通俗来说就是为了数据的安全,避免用户直接接触到数据,增加程序的安全性。在上一篇文章中老梁创建了一个猫类,今天咱们再对它进行改造,通过对比来表现封装的实际意义。对上一篇文章的例子如下图:

    从上面的程序我们可以看出,我们在给猫对象起名字的时候是直接调用的猫的名字属性,这样在这个对象输出的时候,就可以直接打印出猫的名字。这样看起来没有问题,程序也可以运行起来,但是这段程序存在着很大的问题,这些问题不是技术的错误,而是属于编程不规范的范畴。要知道在实际编程中,类的属性是绝对不允许暴露的,这样会给程序带来很大的安全隐患。于是程序员通常采用封装的形式,来避免这种情况。具体的封装见下图:

    以上就是Java封装与不封装的区别,但是看到这里也会有许多小伙伴会感到迷惑:我没看到有什么明显的区别啊,不过是在传值的时候没有直接进行罢了,这样做不是更加麻烦吗?实际上这样做的确是更加麻烦,但是这一步却并不是多此一举。实际上封装的好处还有许多。首先封装可以隐藏类的内部属性,并且对用户隐藏了数据的访问方式,这样可以保护类的内部状态。封装可以防止类中的方法访问属性,防止对象间的交互,提高Java程序的安全性。将类封装起来,不可为外部访问,可以防止开发人员浪费不必要的精力。

    好了,封装的讲解就到这里,其实仔细理解起来封装的概念还是比较简单的。下面咱们就来讲一下Java的继承,这个算是重中之重了。还是以咱们的猫类为例,现在我想新建一个宠物狗类,对于宠物狗来说它具有名字、性别等特征。哎,咱们通过对比发现宠物狗和猫都有名字和性别两个属性,那么咱们能不能为了节省代码,将这些属性给集合在一起呢。当然没问题,我们都知道宠物猫和狗都属于宠物,那么我们只需要新建一个父类Pet让宠物猫Cat和宠物狗Dog继承即可,宠物们在继承的同时又具有自己特有的属性和动作方法,这个过程就叫做继承。而它们的关系代码可以这样写,如下图即可:

    猫继承 狗继承 父类,宠物类

    通过上面的代码我们知道,继承可以减少代码量,需要注意的是一个子类只能继承一个父类,说的通俗一点就是一个子类只能有一个“亲妈”。并且当子类中从新定义一个父类除了方法体其他的都相同的方法,这个过程叫做方法的重写,请记住和之前学习的方法重载的区别。

    以上是Java继承的讲解,关于多态这一特性我们可以通过在上面描写的方法的重写来进行描述。多态使用时的三个必要条件是存在继承、重写、父类对象引用子类对象。一般情况下我们都是使用子类继承父类,这个过程算是多态的向下转型。而当一个父类实例化一个子类对象时,这种多态属于向上转型。而对于多态来说,就是可以消除类型之间的耦合,增加可扩充性,可以使得Java的对象更灵活的调用方法,具体的例子参看一下图片:

    第一部分代码 第二部分代码 运行结果

    相关文章

      网友评论

          本文标题:Java 面向对象三大特性

          本文链接:https://www.haomeiwen.com/subject/itmwgqtx.html