java mongodb drivers 2升级到3_JAVA从头开始一基础梳理(3-2)
本章为大家介绍类的特性。
首先,第一个特性----封装。
在这个类别中,属性id 与属性 color 是可以被外部直接访问和修改的,比如
可以看到,事实上这样的内容是错误的,我们需要在定义属性值时需要加入验证等等操作,这时,我们就需要对类做出封装
如此,直接对于类的属性访问变为不可访问。那么如果我们需要对类的属性操作时改怎么办呢,这时,我们需要的是为这些私有属性提供访问函数。
我们为Car类的id和color类提供了get/set函数,这时我们可以使用对应函数来操作私有的属性值,如下图.
同时,在set函数中做赋值判断,即可对设置的值做效验。
封装一定程度上保证了类数据的安全性,但在其他方面,也提高了类属性访问的难度。
接下来,我们来了解类的第二个特性---继承。
回到上一节,我们发过这样一张关系图
其中卡车和轿车均属于车这个类别,我们用代码来实现如下
我们可以看到,因为卡车本来属于车下的一个分类,所以很自然,他拥有了车这个类别的一些通用的属性(还有函数),既然是车类别下的一个子类,那么我们只需要让卡车类获得车类别的通用属性。
加入extends关键字,继承了Car的公用属性,这里需要说明的是,继承关系直接获得的是父级类的公用属性,即public关键字所修饰的属性及函数(这里不讨论protected),看如下代码
我们看到,当使用Truck对象调用Car类属性length时是成功的,而调用id属性却失败,这就是因为id属性的修饰符为private。那么如果我们需要访问父类的private属性时,需要怎么做呢,首先,我们需要父类提供public修饰的私有属性访问函数,即get/set,然后,在子类中使用super关键字进行调用。
此时,使用Truck对象的getSuperId函数即可访问父类私有属性。
ps:实际上按照我的代码的写法,是添加了复杂度,是没有必要的,一般来说,作为父类,也只会提供通用,public修饰的属性。这里只是为了演示如何使用所以故意做这样的设计。
继承特性一定程度上简化了代码,但是也降低了一定的代码可读性,同时需要注意,每一个类只可以有一个父类,可以有无限多个子类。
类特性的最后一个----多态
多态,指对象的多种形态,多态有一些必要条件,需要有继承或实现(实现是接口的一种逻辑,在后续章节会有介绍),必须重写或实现父类函数或接口,引用需要指向子类对象。
具体使用看如下码图(继承)
可以看到 Truck类重写了Car父类的go函数(使用override注解,表示当前函数为覆盖父类函数),此时我们看看如下几个调用示例
运行结果为
这就说明,当程序运行时对于函数,调用父类函数还是子类函数的依据是具体实现。
java mongodb drivers 2升级到3_JAVA从头开始一基础梳理(3-2)相关推荐
- java 判断是否是list_JAVA从头开始一基础梳理(4-3)
大家好,今天我们介绍一下java中常用的集合类型. 首先,我们先看一下java中集合类型的结构. 以上是集合的继承关系图,通常我们使用的比较多的是 Set , List , Map以及其衍生的子类和接 ...
- 集合的get方法中参数从多少开始_JAVA从头开始一基础梳理(4-5-3)
大家好,今天进击 继续为大家介绍HashMap集合的其他接口函数. get 函数的作用是从集合中取出一个数据,需要传入参数key,通过对key的匹配去寻找对应的value. 代码行557 通过将参数k ...
- 基于Java多线程的打怪升级类游戏设计与开发
摘要:本文论述了通过JAVA多线程.基于JAVA Swing的GUI图形用户界面设计.IO输入输出流.JDBC技术,实现了游戏系统的UI设计.游戏数据的存储.关卡的设置.用户头像的上传与更改.游戏数据 ...
- Java + MongoDB Hello World Example--转载
原文地址:http://www.mkyong.com/mongodb/java-mongodb-hello-world-example/ A simple Java + MongoDB hello w ...
- mongo mapreduce java_那位帮忙提供一个java mongodb多个collection进行mapreduce的操作。
1.[代码]那位帮忙提供一个java mongodb多个collection进行mapreduce的操作. package com.zuidaima.mongodb.test.main; import ...
- mongodb 去重查询 Java,mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句...
另外附上mongodb eclipse插件地址: http://www.jumperz.net/update/ import java.net.UnknownHostException;import ...
- java mongodb 多表关联查询,多条件查询,分页,排序
前言: 由于最近项目赶,版本迭代快,不知道大BOSS从哪里听别人说MongoDB用来做关系型数据库好,而且速度快,性能高:听到这话的我,立马就反驳了回去:"MongoDB不支持事物" ...
- java mongodb json_Java MongoDB:将JSON数据转换为DBObject
MongoDB带有" com.mongodb.util.JSON "类,可将JSON数据直接转换为DBObject. 例如,数据以JSON格式表示: { 'name' : 'mky ...
- java 西部数码_西部数码Java虚拟主机功能升级
西部数码Java虚拟主机功能升级: 西部数码Java虚拟主机新增内存使用查看功能和自动重启Tomcat功能,西部数码新增这两个功能目的是方便java主机用户掌握内存状况,并可以设置一定的频率自动重启t ...
最新文章
- SAP 物料在启用序列号管理或者不启用序列号管理之间快速切换?
- 使用wordpress 搭建 文档索引服务器
- 0421实验二 作业调度模拟程序
- CCF201604-3 路径解析(100分)
- centos6.5 mysql下载_Centos6.5在线安装mysql 8.0详细教程
- Winform中实现跨窗体获取ZedGraph的ZedGraphControl控件对象
- 【UVALive - 3126】Taxi Cab Scheme (二分图,最小路径覆盖)
- “云计算”越来越重要 但更重要的是“云安全”
- markdown改字体和背景颜色(html)
- tensorflow中命名空间、变量命名的问题
- Youtube视频加字幕需要的软件电脑版+手机版 2020语音视频自动生成字幕软件
- x264和x265编码技术的区别
- 欧文分校的计算机科学博士,2020年加州大学欧文分校博士含金量
- 电脑重装系统经验总结
- 常用的几款3D软件介绍
- 电源上的sense什么意思_开关电源基本术语
- Tournament
- java中math类的作用_Java开发知识之Java的数字处理类Math类
- log4j 2.x读取配置文件以及使用
- Easy Excel 使用