java特征
java的核心是面向对象,与之相对的是面向过程的编程,在对整个java编程没有足够的理解和运用的情况下恐怕没办法很好的理解这两个概念。
在我的初步理解中,写一个程序就例如做一件事情,面向过程的思想或许就是指这一步做什么,下一步又做什么,直到完成这件事,突出的是做的步骤;而面向对象的思想则是这个人做什么,那个人做什么,直到合起来完成这件事;虽然结果都是完成这件事,但是一个着重点是做的步骤,而另一个则是谁做什么。
所有的面向对象编程语言,都包含着三个原则或者说是特征、机制,分别是封装、继承和多态。
java中一切皆对象,类是对象,接口是对象,属性是对象,方法也是对象。而对象是什么,对象就是object,就是我们通俗所说的东西。什么是东西?可以说宇宙是个东西,人是个东西,一件事也是个东西,一切皆对象,也就是一切皆东西。
封装的简单理解就是把一些零散的却又有一定关系的东西整合起来作为一个整体来使用,或者这些东西可以称之为对象。就好比把一辆车当作一个程序,它上边有非常多的零件,比如塑胶件、五金件等,但是我们通常只会说方向盘、轮胎,而方向盘并不是最小的个体,他们是由更小的零件组合的,把这些零件组合成方向盘来实现掌控方向的过程就是封装。
继承的概念就类似于我们生活中常说的继承,也就是子类会获得父类的部分东西,但是却又不是全部。例如我们可以继承父亲的部分基因从而长的像父亲,也可以继承父亲的关系网甚者财产,但是他的兄弟却不能是我们的兄弟,还是会有所不同。有一点要注意的是,这里说的是父类而不是说的父亲,这是有很大区别,所谓的父类,父亲是,爷爷也是,爷爷的爷爷一样是。
据我理解, 多态的概念通常涉及到接口和实现的问题,也就是说一个接口可以有多种不同的实现形态。一样可以拿人做个例子,人有身份,而身份是个抽象的东西,是个具有相对性的概念,对于他的朋友来说,他的身份就是朋友,对于他的晚辈来说,他就是个长辈,而对于他的同事来说,他就是个同事。这个人是个接口,身份就是抽象方法,其他不同的人就是不同的实现这个借口的方法,具体的身份就是具体的实现状态。同一个人,不同的身份,这就是多态。
既然多态通常跟接口有关,那么接口是什么?接口可以看作是特殊的抽象类,也就是一种所有方法都是抽象方法的抽象类。需要注意的是,抽象类可以有几种形式,可以没有抽象方法,可以有一部分抽象方法,也可以全部是抽象方法。可是接口到底是什么?目前只能再打个比方,我们通常所说的USB接口,就是一个接口,因为它也有多态,当我们用他来连接鼠标或键盘的时候它的功能是一种状态,当我们用它连接数据线传输数据时又是一种状态。
封装、继承、多态原本就是一些概念,概念是由人定义的,所以不同的人具体理解可能不一样,但是大体上是那么回事就可以了。
java特征的更多相关文章
- (二)java特征
java的核心是面向对象,与之相对的是面向过程的编程,在对整个java编程没有足够的理解和运用的情况下恐怕没办法很好的理解这两个概念. 在我的初步理解中,写一个程序就例如做一件事情,面向过程的 ...
- 深入理解Java虚拟机--中
深入理解Java虚拟机--中 第6章 类文件结构 6.2 无关性的基石 无关性的基石:有许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码(ByteCode),从而 ...
- java面试题(杨晓峰)---第一讲谈谈你对java平台的理解
本人总结: 面向对象(封装,继承,多态) 平台无关性(jvm运行,class文件) 语言(泛型,lambda) 类库(集合,并发,网络,io/nio) jre(java运行环境,JVM,类库) JDK ...
- Java基础学习框架总结
内容:Java基础知识全面复习 时间:2019.9.3-2019.9.26 代码:D:/ProgramFiles/IDEA/hello_sort 一.基础知识 learning1 case分支 Inp ...
- guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用
guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用 1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection ...
- 监控Spark应用方法简介
监控Spark应用有很多种方法. Web接口每一个SparkContext启动一个web UI用来展示应用相关的一些非常有用的信息,默认在4040端口.这些信息包括: 任务和调度状态的列表RDD大小和 ...
- 瓜娃《guava》api快速入门
1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection API Guava Basic Utilities IO API C ...
- Guava之简介
1.介绍 Guava最初是在2007年作为“Google Collection Library” 出现的,这个项目在处理Java集合时提供了一些有用的工具,Google的这个guava项目已经成为了 ...
- Guava常用方法
简介 Guava,中文是石榴的意思,Guava项目,是基于java的Google的开源的工具类库,包含了许多被Google的java项目广泛依赖的核心库, 例如:集合.缓存.原生类型支持.并发库.通用 ...
随机推荐
- ABP官方文档翻译 6.1.2 MVC视图
ASP.NET MVC 视图 介绍 AbpWebViewPage基类 介绍 ABP通过Abp.Web.Mvc nuget包集成到MVC视图.你可以如往常一样创建正常的MVC视图. AbpWebView ...
- python学习交流 - 匿名函数
匿名函数 匿名函数是一个很有特色的定义函数的功能.在实际使用的过程,用户有时不得不为一些一行代码即可实现的功能来定义一个函数,例如像map, max, filter等内置函数的key参数只能接收可调用 ...
- springboot(二十):使用spring-boot-admin对spring-boot服务进行监控
上一篇文章<springboot(十九):使用Spring Boot Actuator监控应用>介绍了Spring Boot Actuator的使用,Spring Boot Actuato ...
- Mybatis使用过程问题总结
Mybatis配置文件 test语句问题 字符串比较问题 示例语句:<if test="isIbatis == 'Y'"></if> 问题:NumberEx ...
- Spring-shiro源码陶冶-DelegatingFilterProxy和ShiroFilterFactoryBean
阅读源码有助于陶冶情操,本文旨在简单的分析shiro在Spring中的使用 简单介绍 Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能 web.xml配置Shiro环 ...
- Android端生成META-INF信息文件的Gradle插件 RapidMetaInfPlugin
来源博客:Wang Jie's Blog 本文链接:<http://blog.wangjiegulu.com/2018/02/05/Android端生成META-INF信息文件的Gradle插件 ...
- Linux内核链表-通用链表的实现
最近编程总想着参考一些有名的开源代码是如何实现的,因为要写链表就看了下linux内核中对链表的实现. 链表是一种非常常见的数据结构,特别是在动态创建相应数据结构的情况下更是如此,然而在操作系统内核中, ...
- 洛谷 [P2483] [模板] k短路
人生中的第一道黑题... 其实就是k短路模板 #include <iostream> #include <cstdio> #include <cstring> #i ...
- 洛谷 [P1220] 关路灯
本题是一道区间DP,很容易设计出状态, dp[i][j]代表关掉i到j的路灯所耗的电量,但是对于新到一个路灯来说,可以是原来直接来的,也可以是掉头来的,于是还需要添加一维 0代表在区间的左端,1代表在 ...
- centos java环境搭建
我个人配置的是阿里云centos 7.4 64bit 不存在openjdk 看下面内容的情况下看是否存在openjdk java -version 如果返回java版本值,则存在openjdk,需要卸 ...