<Java><类与对象><OOP>
Overview
类
- 封装(encapsulation): 也称为数据隐藏。从形式上看,是将数据与行为组合起来,并对对象的使用者隐藏了数据的实现方式。封装给对象赋予了黑盒特征,提高重用性和可靠性。
- 继承:扩展已有类来方便的定义一个新的类。子类具有父类的全部属性和方法。
对象
- 对象的三个特性:
- 对象的行为:可以对对象施加的操作
- 对象的状态:每个对象都保存着描述当前特征的信息,状态可能会因为方法调用而改变。
- 对象标识:唯一标识一个对象的方式(identity)。
Eg
- 一个破坏封装性的例子
class Employee{
private Date hireDay;
public Date getHireDay(){
return hireDay;
}
....
}上面这个例子中,返回的是Date的引用,那么在外层调用Date d = getHireDay();那么对d的改变实际上就是对私有变量hireDay的改变。因此,要返回一个可变对象的引用,应该首先对它进行克隆。
静态域与静态方法
静态常量
- 比静态变量用的多,比如Math中定义PI, System.out常量
public static final double PI = 3.14....;
静态方法
- 是一种不能对对象实施操作的方法。
工厂方法
- 静态方法的一种常见用途。
- eg:NumberFormat类使用工厂方法产生不同风格的对象
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
NumberFormat percentFormat = NumberFormat.getPercentInstance();
double x = 0.1;
System.out.print(percentFormat.format(x) + " " + currencyFormat.format(x));- 这里你可能想问为什么不利用构造器完成这些操作呢?注意原因有两个:
- 无法命名构造器。
- 当使用构造器时,无法改变所构造的对象类型。
类设计技巧
- 一定要保证数据私有--> 即绝对不要破坏封装性。
- 一定要对数据初始化,而不应该依赖系统默认值。
- 不要在类中使用过多的基本类型,也即用其他的类代替多个相关的基本类型的使用。
- 将职责过多的类进行分解。
- 类名和方法名要能够体现他们的职责。
<Java><类与对象><OOP>的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- python—变量和简单数据类型
1.变量 在程序中可随时修改变量的值,python始终记录变量的最新值 变量名:必须以字母或者下划线开头,只能包含字母数字和下划线,建议使用下划线+小写字母的方式命名,不能为函数名和python关键字 ...
- vue select的change事件,将点击过的城市名存在数组中,下次调用不需要再调用接口
<template> <div id="body" class="application" v-show="show" v ...
- Codefores 1151E Number of Components
大意:给定n元素序列$a$, $1\le a_i \le n$, 定义函数$f(l,r)$表示范围在$[l,r]$以内的数构成的连通块个数, 求$\sum\limits_{i=1}^{n}\sum\l ...
- web中集成shiro
Shiro提供了与Web集成的支持,其通过一个ShiroFilter入口来拦截需要安全控制的URL,然后进行相应的控制,ShiroFilter类似于如Strut2/SpringMVC这种web框架的前 ...
- 4月22 mysql常用函数
一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...
- OpenStack设计与实现5——RESTful API和WSGI
转https://segmentfault.com/a/1190000004361778 Tips:文章为拜读@xingjiarong 后有感而做的分享,先对作者表示感谢,附原文地址:http://b ...
- InnoDB存储引擎介绍-(4)Checkpoint机制二
原文链接 http://www.cnblogs.com/chenpingzhao/p/5107480.html 一.简介 思考一下这个场景:如果重做日志可以无限地增大,同时缓冲池也足够大,那么是不需要 ...
- InnoDB存储引擎介绍-(3)InnoDB缓冲池配置详解
原文链接 http://www.ywnds.com/?p=9886 一.InnoDB缓冲池 InnoDB维护一个称为缓冲池的内存存储区域 ,用于缓存内存中的数据和索引.了解InnoDB缓冲池的工作原 ...
- [CodeForces - 197E] E - Paint Tree
E - Paint Tree You are given a tree with n vertexes and n points on a plane, no three points lie on ...
- 一、JDBC
一.CRUD(增删改查) C:增加Create R查询(Retrieve) U更新(Update) D删除(Delete) 在JDBC中,增加,删除,修改,操作都基本一样,只是传递不同SQL语句,最后 ...