浅谈Java三大特性

Java三大特性想必大家都不陌生:封装、继承以及多态。很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~

首先,名词解释:

封装,即是隐藏一切可隐藏的东西,对外界只提供最简单的编程接口。比如,在一个类中,把数据和操作方法绑定起来,对数据的访问只能通过这些 get/set 方法(又称为接口)来实现。

为什么封装?比如,我是一个厨师,我有一本食谱,你今天想吃肉,让我帮忙露两手。具体加了多少盐,放了多少醋你不需要关心(隐藏具体实现过程),你只管提出需求,我帮你实现(提供服务,即接口)。

继承,从已有类得到继承信息创建新类的过程。提供信息的叫父类(超类、基类),得到继承信息的叫子类(派生类)。既保证了延续性,又能实现可变性。

为什么继承?比如,我是一个厨师,厨艺高绝天下,你是我儿子,你自然要得到我的真传(继承父类的信息)。可是,有一天,你说你想去唱去跳去打篮球(实现可变)。儿子长大了,理应去追逐你自己的舞台,当爹的当然支持你(继承的优点展露无遗)。

多态:允许不同子类型对象对同一消息做出不同响应,即,用同样的对象,调用同样的方法,但是做了不同的事情。分为编译时多态(如:方法重载,同一个方法实现多个不同的逻辑,并可以在同一个类中实现。其实现的原理是,方法名相同,参数的个数或者类型不同)和运行时多态(如:方法重写,一个类中不可能两个定义一样的方法。因此,重写就是子类对父类定义的方法重新实现一次)。

为什么多态?比如,我是一个厨师,今天炒一道番茄鸡蛋,以往炒这道菜我会加入小葱和老姜做配料增香,但是今天小葱被隔壁老王借走了,那么我炒菜的时候就没加葱(参数个数不同),但这道菜还是番茄炒蛋(编译时多态);大儿子吃的很不满意,决定去老李家菜地里偷点葱,回来重新炒一个番茄炒蛋,配料虽然齐了,但是火候太大,炒糊了;你也不开心了,心里想着:你们都不行,让我来。于是把剩下的葱都拿去炒菜了,这次火候小了一点,番茄的口感和鸡蛋没有融合在一起,不过本质上和你哥哥炒的一样都是一道番茄炒蛋(方法重写)。

好了,Java三大特性就总结到这,如果有人跟你抬杠,说Java不是应该有四大特性么?你千万不要觉得人家是在为难你胖虎,因为,抽象也能算半个,只是平常淡出了大家的视线。

那么,什么是抽象呢?抽象就是将一类对象的共同特征总结出来,然后去构造类的过程(人类,特征?不详!)。包括数据抽象(手,足等??)和行为抽象(吃饭、睡觉)两方面,而抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么(只需要关注人类有吃饭这个属性即可,不需要关注用左手还是右手)。

谈完人类,心里面大约会有一丢丢小疑问,人的数据抽象是手足等特征么,那么缺失了手足的残疾人士就不属于人类了么?我觉得这个问题非常棒,首先,一个人的本质特征一定不是手足五官等外在形态。这时候就会有小伙伴来抬杠了:啥意思,你见到一个人,不是凭借外貌来辨别他们的么?对的,我们熟悉一个人,很多时候都会从外貌、声音等明显特征来识别,但若是他们戴着网络的面具,而且也没有和你说话,那么你是如何判断这究竟是不是我们熟悉的那个人呢?

所以,大家认为,人类的数据抽象到底是什么呢?

原文地址:https://www.cnblogs.com/yangfx/p/12052032.html

时间: 2024-08-22 02:10:28

浅谈Java三大特性的相关文章

浅谈Java三大特性之继承

前言 简单用伪代码去介绍一些 父类与子类的构造函数问题 others 前言 类的继承性是面向对象语言的基本特性,多态性前提是继承性.Java 支持继承性和多态性.——Java从小白到大牛 继承:三大特性之一,关键词:extends 简单用伪代码去介绍一些 假设需要定义个student类 public class Student{    private String name;//名字    private int age;//年龄    private int sex;//性别} 再来个需求,需

浅谈Java三大特性之多态

目录 一.前言 二.发生的条件 三.多态包含(或者说体现在)两个方面: 四.示例 感谢阅读 一.前言 这篇讲下三大特性之一的多态,可以通俗得去理解,多种形态,多种姿态... 那么在面向对象的程序设计中,多态是 指什么? Java引用变量有两个类型:一个是编译类型,一个是运行时类型.编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定.如果编译类型和运行时类型不一致,就可能出现所谓的多态(Polymorphism) "多形性"(Polymorphism)从另一个角

浅谈Java三大框架与应用

前言:对于一个程序员来说,尤其是在java web端开发的程序员,三大框架:Struts+Hibernate+Spring是必须要掌握熟透的,因此,下面谈谈java三大框架的基本概念和原理. JAVA三大框架 一.Spring Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯.Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器.然而,这仅仅是

java语言有哪些优势?浅谈java三大框架

对于初学者来说,这三大框架Struts+Hibernate+Spring被赋予了太多神秘的色彩,似乎它们是重中之重的知识!但是对于拥有多年java开发经验的专业技术人员来说,对于那些Java牛人来说,却对这三大框架不太感冒!那么这三大框架到底重不重要呢? 现在很多企业都在用这三大框架,所以面试时面试官总会问三大框架的问题.但不可否认的是,也有很多大型企业没有用这三大框架,这些企业经过多年发展,自身已经有一定的技术积累,也形成了自己独特的技术框架体系.对于这些企业来说这三大框架既可以说很重要,也可

浅谈java异常[Exception]

本文转自:focusJ 一. 异常的定义 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常.绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败.之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意. 记得当初学习java的时候,异常总是搞不太清楚,不知道这个异常是什么意思,为什么会有这个机制?但是随着知识的积累逐渐也

浅谈java类集框架和数据结构(2)

继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主要有最重要的三种实现:ArrayList,Vector,LinkedList,三种List均来自AbstracList的实现,而AbstracList直接实现了List接口,并拓展自AbstractCollection. 在三种实现中,ArrayList和Vector使用了数组实现,可以认为这两个是

!! 浅谈Java学习方法和后期面试技巧

浅谈Java学习方法和后期面试技巧 昨天查看3303回复33 部落用户大酋长 下面简单列举一下大家学习java的一个系统知识点的一些介绍 一.java基础部分:java基础的时候,有些知识点是非常重要的,比如循环系列.For,while,do-while.这方面只要大家用心点基本没什么难点. 二.面向对象:oop面向对象的时候,偏重理论,相信这方面的文章也很多,大家可以多看看,在这就不说了.重点掌握面向对象的三大特征和基本原理. 三.java核心一:这方面主要偏重API,所以在学习了这章的时候,

浅谈Java接口(Interface)

浅谈Java接口 先不谈接口,不妨设想一个问题? 如果你写了个Animal类,有许多类继承了他,包括Hippo(河马), Dog, Wolf, Cat, Tiger这几个类.你把这几个类拿给别人用,但是别人想给动物加上宠物功能,要怎么办呢? 根据以往的知识,我们可以: 把Pet方法加入Animal类 这样所有的子类都有Pet方法,以后新继承Animal的动物也有这个方法. 这个方案很简单,但是这个方案也很操蛋.为什么? 有人会养河马吗?有人会养狼养狮子吗?不太行. 如果都是Pet方法,狗需要遛,

浅谈Java的默认和静态方法

目录 浅谈Java的默认和静态方法 Java新增默认方法有啥用 Java新增的静态方法有啥用 浅谈Java的默认和静态方法 允许在接口中声明默认方法和静态方法,是JDK1.8新增的特性.存在即合理,两者的出现,让接口越来越像抽象类(关于两者之别下一篇做总结),那么它们为什么出现呢,它们的出现产生了哪些便利,Java小白开始学习并总结,不足之处,还望评论区指点一二! Java新增默认方法有啥用 官方解答:默认方法允许您添加新的功能到现有库的接口中,并能确保与采用旧版本接口编写的代码的二进制兼容性.