java特性_程序进阶:Java三大特性详解

在上一篇文章中老梁粗略地给大家介绍了一下什么是类和对象,并且提到了Java的三大特性,封装、继承和多态。在今天的这篇文章中,就详细的介绍一下Java的三大特性,如果有什么遗漏的地方欢迎大家批评指正,不过还希望措辞能够和缓一点儿。

2b726c6d268f827d375775f2967c1394.png开个玩笑

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

8f5e2f314b0af418c58981551d55b694.png

820e0758394f24d15013590f8710ceb3.png

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

cd00c110747bfb9933eef922ec5cfe8e.png

763f386c6b174b0d5b2fa9180103fd9f.png

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

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

c382a8d8a96aa16e7a76d987a803768f.png猫继承

1e09446d36861985fc91ab24447babd8.png狗继承

e35ddef27714fb92a46037d66a29c15c.png父类,宠物类

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

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

50dcef304297c2011bb47aeea568363f.png第一部分代码

0c93895b0de9c838274e2d654799407a.png第二部分代码

58c6fae1305e3e26500acf6efd71401d.png运行结果

上面的这个例子是老梁在网上搜集的,算是一个比较典型的多态例子,希望大家能够有所收获。

好了,今天就是老梁带给大家的文章。在本文中算是比较详细的介绍了一下Java程序的三大特性:封装、继承、多态,解释的还算是比较详细。希望可以给你带来一些启发,如果有哪些地方出错,请及时告知老梁,老梁会马上改正免得误导别人。欢迎在评论区交流,大家共同进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值