本章为大家介绍类的特性。

首先,第一个特性----封装。

在这个类别中,属性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)相关推荐

  1. java 判断是否是list_JAVA从头开始一基础梳理(4-3)

    大家好,今天我们介绍一下java中常用的集合类型. 首先,我们先看一下java中集合类型的结构. 以上是集合的继承关系图,通常我们使用的比较多的是 Set , List , Map以及其衍生的子类和接 ...

  2. 集合的get方法中参数从多少开始_JAVA从头开始一基础梳理(4-5-3)

    大家好,今天进击 继续为大家介绍HashMap集合的其他接口函数. get 函数的作用是从集合中取出一个数据,需要传入参数key,通过对key的匹配去寻找对应的value. 代码行557 通过将参数k ...

  3. 基于Java多线程的打怪升级类游戏设计与开发

    摘要:本文论述了通过JAVA多线程.基于JAVA Swing的GUI图形用户界面设计.IO输入输出流.JDBC技术,实现了游戏系统的UI设计.游戏数据的存储.关卡的设置.用户头像的上传与更改.游戏数据 ...

  4. Java + MongoDB Hello World Example--转载

    原文地址:http://www.mkyong.com/mongodb/java-mongodb-hello-world-example/ A simple Java + MongoDB hello w ...

  5. mongo mapreduce java_那位帮忙提供一个java mongodb多个collection进行mapreduce的操作。

    1.[代码]那位帮忙提供一个java mongodb多个collection进行mapreduce的操作. package com.zuidaima.mongodb.test.main; import ...

  6. mongodb 去重查询 Java,mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句...

    另外附上mongodb eclipse插件地址: http://www.jumperz.net/update/ import java.net.UnknownHostException;import ...

  7. java mongodb 多表关联查询,多条件查询,分页,排序

    前言: 由于最近项目赶,版本迭代快,不知道大BOSS从哪里听别人说MongoDB用来做关系型数据库好,而且速度快,性能高:听到这话的我,立马就反驳了回去:"MongoDB不支持事物" ...

  8. java mongodb json_Java MongoDB:将JSON数据转换为DBObject

    MongoDB带有" com.mongodb.util.JSON "类,可将JSON数据直接转换为DBObject. 例如,数据以JSON格式表示: { 'name' : 'mky ...

  9. java 西部数码_西部数码Java虚拟主机功能升级

    西部数码Java虚拟主机功能升级: 西部数码Java虚拟主机新增内存使用查看功能和自动重启Tomcat功能,西部数码新增这两个功能目的是方便java主机用户掌握内存状况,并可以设置一定的频率自动重启t ...

最新文章

  1. SAP 物料在启用序列号管理或者不启用序列号管理之间快速切换?
  2. 使用wordpress 搭建 文档索引服务器
  3. 0421实验二 作业调度模拟程序
  4. CCF201604-3 路径解析(100分)
  5. centos6.5 mysql下载_Centos6.5在线安装mysql 8.0详细教程
  6. Winform中实现跨窗体获取ZedGraph的ZedGraphControl控件对象
  7. 【UVALive - 3126】Taxi Cab Scheme (二分图,最小路径覆盖)
  8. “云计算”越来越重要 但更重要的是“云安全”
  9. markdown改字体和背景颜色(html)
  10. tensorflow中命名空间、变量命名的问题
  11. Youtube视频加字幕需要的软件电脑版+手机版 2020语音视频自动生成字幕软件
  12. x264和x265编码技术的区别
  13. 欧文分校的计算机科学博士,2020年加州大学欧文分校博士含金量
  14. 电脑重装系统经验总结
  15. 常用的几款3D软件介绍
  16. 电源上的sense什么意思_开关电源基本术语
  17. Tournament
  18. java中math类的作用_Java开发知识之Java的数字处理类Math类
  19. log4j 2.x读取配置文件以及使用
  20. Easy Excel 使用

热门文章

  1. 强连通分量(学习心得)
  2. 无用的设计模式之装饰者模式
  3. HOG(方向梯度直方图)
  4. 诡异的防火墙故障,能PING通,但访问ORACLE不稳定
  5. sql 2005 try catch
  6. 介绍TCP/udp比较好的博客
  7. 使用Busybox构造cramfs根文件系统
  8. 机器视觉行业市场现状及发展前景分析
  9. C# ini文件读写函数
  10. HALCON示例程序color_fuses.hdev通过颜色对保险丝进行分类