java的核心是面向对象,与之相对的是面向过程的编程,在对整个java编程没有足够的理解和运用的情况下恐怕没办法很好的理解这两个概念。

在我的初步理解中,写一个程序就例如做一件事情,面向过程的思想或许就是指这一步做什么,下一步又做什么,直到完成这件事,突出的是做的步骤;而面向对象的思想则是这个人做什么,那个人做什么,直到合起来完成这件事;虽然结果都是完成这件事,但是一个着重点是做的步骤,而另一个则是谁做什么。

所有的面向对象编程语言,都包含着三个原则或者说是特征、机制,分别是封装、继承和多态。

java中一切皆对象,类是对象,接口是对象,属性是对象,方法也是对象。而对象是什么,对象就是object,就是我们通俗所说的东西。什么是东西?可以说宇宙是个东西,人是个东西,一件事也是个东西,一切皆对象,也就是一切皆东西。

封装的简单理解就是把一些零散的却又有一定关系的东西整合起来作为一个整体来使用,或者这些东西可以称之为对象。就好比把一辆车当作一个程序,它上边有非常多的零件,比如塑胶件、五金件等,但是我们通常只会说方向盘、轮胎,而方向盘并不是最小的个体,他们是由更小的零件组合的,把这些零件组合成方向盘来实现掌控方向的过程就是封装。

继承的概念就类似于我们生活中常说的继承,也就是子类会获得父类的部分东西,但是却又不是全部。例如我们可以继承父亲的部分基因从而长的像父亲,也可以继承父亲的关系网甚者财产,但是他的兄弟却不能是我们的兄弟,还是会有所不同。有一点要注意的是,这里说的是父类而不是说的父亲,这是有很大区别,所谓的父类,父亲是,爷爷也是,爷爷的爷爷一样是。

据我理解, 多态的概念通常涉及到接口和实现的问题,也就是说一个接口可以有多种不同的实现形态。一样可以拿人做个例子,人有身份,而身份是个抽象的东西,是个具有相对性的概念,对于他的朋友来说,他的身份就是朋友,对于他的晚辈来说,他就是个长辈,而对于他的同事来说,他就是个同事。这个人是个接口,身份就是抽象方法,其他不同的人就是不同的实现这个借口的方法,具体的身份就是具体的实现状态。同一个人,不同的身份,这就是多态。

既然多态通常跟接口有关,那么接口是什么?接口可以看作是特殊的抽象类,也就是一种所有方法都是抽象方法的抽象类。需要注意的是,抽象类可以有几种形式,可以没有抽象方法,可以有一部分抽象方法,也可以全部是抽象方法。可是接口到底是什么?目前只能再打个比方,我们通常所说的USB接口,就是一个接口,因为它也有多态,当我们用他来连接鼠标或键盘的时候它的功能是一种状态,当我们用它连接数据线传输数据时又是一种状态。

封装、继承、多态原本就是一些概念,概念是由人定义的,所以不同的人具体理解可能不一样,但是大体上是那么回事就可以了。

java特征的更多相关文章

  1. (二)java特征

    java的核心是面向对象,与之相对的是面向过程的编程,在对整个java编程没有足够的理解和运用的情况下恐怕没办法很好的理解这两个概念.     在我的初步理解中,写一个程序就例如做一件事情,面向过程的 ...

  2. 深入理解Java虚拟机--中

    深入理解Java虚拟机--中 第6章 类文件结构 6.2 无关性的基石 无关性的基石:有许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码(ByteCode),从而 ...

  3. java面试题(杨晓峰)---第一讲谈谈你对java平台的理解

    本人总结: 面向对象(封装,继承,多态) 平台无关性(jvm运行,class文件) 语言(泛型,lambda) 类库(集合,并发,网络,io/nio) jre(java运行环境,JVM,类库) JDK ...

  4. Java基础学习框架总结

    内容:Java基础知识全面复习 时间:2019.9.3-2019.9.26 代码:D:/ProgramFiles/IDEA/hello_sort 一.基础知识 learning1 case分支 Inp ...

  5. guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用

    guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用 1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection ...

  6. 监控Spark应用方法简介

    监控Spark应用有很多种方法. Web接口每一个SparkContext启动一个web UI用来展示应用相关的一些非常有用的信息,默认在4040端口.这些信息包括: 任务和调度状态的列表RDD大小和 ...

  7. 瓜娃《guava》api快速入门

    1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection API Guava Basic Utilities IO API C ...

  8. Guava之简介

    1.介绍 Guava最初是在2007年作为“Google Collection  Library” 出现的,这个项目在处理Java集合时提供了一些有用的工具,Google的这个guava项目已经成为了 ...

  9. Guava常用方法

    简介 Guava,中文是石榴的意思,Guava项目,是基于java的Google的开源的工具类库,包含了许多被Google的java项目广泛依赖的核心库, 例如:集合.缓存.原生类型支持.并发库.通用 ...

随机推荐

  1. jQuery中的选择器及筛选器

    1.jQuery的介绍 1.jQuery是继prototype之后又一个优秀的Javascript框架.其宗旨是--WRITE LESS,DO MORE! 2.它是轻量级的js库,这是其它的js库所不 ...

  2. javascript中的字符串对象和数组对象

    1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...

  3. PHP正则匹配与文件编码关系

    虽然多数高手认为正则会影响程序效率,但是做数据采集的时候,却很难避免使用正则, 强大的正则表达式用起来很舒服,但是在匹配中文的时候,会出现,明明正则表达式没问题,字符数据里包含符合正则表达式的数据,可 ...

  4. JDBC(一)

    JDBC(Java DataBase Conectivity)Java数据库连接,是J2SE的一部分,由java.sql和javax.sql组成. package dbTest; import jav ...

  5. Retrofit 实践

    Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJ ...

  6. C# 使用 Lotus notes 公共邮箱发送邮件

    公司的邮件系统用的是反人类的 Lotus notes, 你敢信? 最近要实现一个功能,邮件提醒功能,就是通过自动发送提醒邮件 前前后后这个问题搞了2天,由于公司的诸多条件限制,无法直接调用到公司发送邮 ...

  7. Git点滴记录

    合并多个commit记录 假设我们当前有三个commit信息,现在要将commit hash为 23f92c 和 409978 合并 //git rebase -i HEAD~3 那么我们可以使用 r ...

  8. LeetCode - 690. Employee Importance

    You are given a data structure of employee information, which includes the employee's unique id, his ...

  9. 定制化WinPE

    1 .首先挂载wim Dism /Mount-WIM /WimFile:D:\install.wim /Index: /MountDir:D:\wimmount 2. 如何要修改WinPE的启动项,可 ...

  10. ★Linux桌面系统技巧(作为客户端)

    [安装chrome浏览器]* 下载(已下载完成):32位:wget https://dl.google.com/linux/direct/google-chrome-stable_current_i3 ...