java笔记 -- 类与对象
- 封装:
从形式上看, 封装是将数据和行为组合在一个包中, 并对对象的使用者隐藏了数据的实现方式.
对象中的数据称为实例域, 操纵数据的过程称为方法.
对于每个特定的类实例(对象)都有一组特定的实例域值.这些值的集合就是这个对象的当前状态(state).
实现封装的关键在于不能让类中的方法直接的访问其他类的实例域.程序仅通过对象的方法与对象数据进行交互.
- 类之间的关系:
依赖(uses-a): 如果一个类的方法操作另一个类的对象, 就可以说一个类依赖于另一个类.应该尽可能将互相依赖的二类减至最低.
聚合(has-a): 一个A对象包含一些B对象, 聚合关系意味着类A的对象包含类B的对象.
继承(is-a): 通过扩展一个类来建立另一个类的过程称为继承.
- 对象的三个特性:
对象的行为(behavior) ---> 可以对对象施加哪些操作,或可以对对象施加哪些方法?
对象的状态(state) ---> 当施加那些方法时, 对象如何响应?
对象的标识(identity) ---> 如何辨别具有相同行为与状态的不同对象?
对象的行为: 是用可调用的方法定义的.同一类的多有对象实例, 由于支持相同的行为而具有家族式的相似性.
对象的状态: 每个对象都保存着描述当前特征的信息. 对象的状态可能会随着时间而发生改变, 但必须是通过调用方法实现.
对象的标识: 每个对象都有一个唯一的身份(identity), 状态常常也存在差异.
对象的这些关键特性在彼此之间相互影响着.
- 预定义类:
并不是所有的类都具有面向对象的特征, 例如Math类.
一个对象变量并没有实际包含一个对象, 而仅仅引用一个对象.
在Java中, 任何对象变量的值都是对存储在另外一个地方的一个对象的引用. new操作符的返回值也是一个引用.
可以显示的将对象变量设置为null, 表明这个对象变量目前没有引用任何对象.
如果将一个方法应用于一个值为null的对象上, 那么就会产生运行错误.
Date birthday = null;
String s = birthday.toString(); // runtime error!
局部的变量不会自动的初始化为null, 而必须通过调用new或将他们设置为null进行初始化.
- Date类:
有一个状态: 特定的时间点. 时间是用距离一个固定时间点(UTC时间1970年1月1日00:00:00)的毫秒数(可正可负)表示的.
不推荐使用的getDay, getMonth,getYear等方法.(当类库设计者意识到某个方法不应该存在时, 就把它标记为不鼓励使用. )
比较时间点的方法: before方法和after方法
- GregorianCalendar类:
包含比Date类多得多的方法.
构造器:
new GregorianCalendar()
构造一个新对象, 用于表示对象构造时的日期和时间.
new GregorianCalendar(1999, 11, 31)
月份是从0开始计算的, 所以11代表12月份.
new GregorianCalendar(1999, Calendar.DECEMBER, 31, 23, 59, 59)
月份可以使用常量
GregorianCalendar deadline = new GregorianCalendar(...);
将构造的对象存储在对象变量中.
周是从周日开始算的, 从1开始, 类中得到5其实是周四
get方法获取时间,set方法设置时间, add延长或者缩短时间(参考下面的类);
set和add方法是对对象状态进行修改的, 为更改器方法
int firstDayOfWeek = d.getFirstDayOfWeek();
更改器方法: 对实例域做出修改的方法称为更改器方法. 例如set, add
访问器方法: 仅访问实例域而不进行修改的方法称为访问器方法. 例如get
- GregorianCalendar类和Date类之间转换:
GregorianCalendar --> Date:
GregorianCalendar calendar = new GregorianCalendar(year, month, day);
Date hireDay = calendar.getTime(); // 获得时间点
Date --> GregorianCalendar:
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(hireDay);
int year = calendar.get(Calendar.YEAR);
// ObjectNote.java package com.picc.sample.objectsample; import java.util.Calendar;
import java.util.GregorianCalendar; public class ObjectNote {
public static void main(String[] args) {
GregorianCalendar now = new GregorianCalendar();
// get方法获取时间
int month = now.get(Calendar.MONTH) + 1;
int weekday = now.get(Calendar.DAY_OF_WEEK); // set方法设置时间
GregorianCalendar deadline = new GregorianCalendar(1999, Calendar.DECEMBER, 31, 23, 59, 59);
// 直接设置年月日
deadline.set(2001, Calendar.APRIL, 15); // 分别设置年月日
// deadline.set(Calendar.YEAR, 2001);
// deadline.set(Calendar.MONTH, Calendar.APRIL);
// deadline.set(Calendar.DAY_OF_MONTH, 15); // 为给定的日期增加天数, 星期数,月份等, 正数往后移,负数往前移.
deadline.add(Calendar.MONTH, 3); // 给deadline延长3天.
System.out.println("month: " + month);
System.out.println("weekday: " + weekday);
System.out.println(deadline);
}
}
java笔记 -- 类与对象的更多相关文章
- Java笔记—— 类与对象的几个例子
问题1 按要求编写java应用程序: 编写西游记人物类,属性有:身高,名字和武器.方法有:显示名字,显示武器. 在main方法中创建两个对象.猪八戒和孙悟空,并分别为他们的两个属性名字和武器赋值,最后 ...
- 关于Java构造类与对象的思考
简单记录一下Java构造类与对象时的流程以及this和super对于特殊例子的分析. 首先,接着昨天的问题,我做出了几个变形: Pic1.原版: Pic2.去掉了T.foo方法中的this关键字: P ...
- 第31节:Java基础-类与对象
前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载 ...
- Java面向对象-类与对象
Java面向对象-类与对象 类与对象的关系 我们通俗的举个例子,比如人类是一种类,张三这个人就是人类的具体的一个个体,也就是java中的对象:这就是一个类与对象的关系: 类的定义 下面看实例 类的创建 ...
- 《python基础教程(第二版)》学习笔记 类和对象(第7章)
<python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person: def setName(self,name): self.name=n ...
- 《Java编程思想》读书笔记-类与对象
欢迎各位读者关注我的微信公众号,共同探讨Java相关技术.生命不止,学习不休! 也许你慢慢地对程序有了这样的认识:程序只是一些列带有方法的对象的组合,这些方法以其它对象为参数,可在任何地方返回,并发送 ...
- Java学习笔记--类和对象
1.介绍面向对象的编程 面向对象是现在主流的编程样例,它替代了以前C语言使用时的“结构体”,Java是一门面向对象的语言,所以需要熟悉面向对象的概念.面向对象的程序由很多对象组成,每 ...
- JAVA基础——类和对象
java类与对象学习笔记 一.成员变量和局部变量 (1)定义 1.成员变量 在类中定义,用来描述对象将要有什么.(默认的成员变量值为0) 2.局部变量 在类的方法中定义,在方法中临时保存数据. 演示示 ...
- Java:类与对象概念
什么是类? 怎样定义一个类? 什么是对象,类和对象之间是什么关系,怎样创建一个对象? 对象引用和对象在内存中是如何分配的? 什么是类? 1. 类是具有相同的属性和功能的事物的抽象的集合,在面向对象 ...
随机推荐
- VBA语法总结
为了控制Excel,学了些VBA,总结下语法,下文分为五部分: 一.代码组织 二.常用数据类型 三.运算符 四.控制流 五.常用内置函数 一.代码组织 1.能写代码的地方有{模块,类模块}. 2.代码 ...
- Delphi 中的 XMLDocument 类详解(10) - 判断节点类型: 支节点、叶节点、文本节点、空节点
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- 《Mysql 分区分表》
一:分区/分表 为了什么? - 当MySQL单表的数据量过大时,数据库的访问速度会下降,需要处理大量数据,所以需要把数据分散存储. - 常用 "水平" 切分 二:MySQL常见的水 ...
- Manjaro 玩机记录
需求: 物理机使用linux个人版本系统,最好支持 微软office QQ/Tim 等通讯软件, 软件易安装, 图形界面可修改, 具有多个多个开发环境如:python2 python3 gcc nod ...
- DOS的重定向命令及在安全方面的应用
dos的重定向命令 2006-10-15 16:47 新手DOS应用技巧人小鬼大 重定向命令在安全方面的应用来源:ChinaITLab收集整理2005-7-21 11:12:00 大家知道,DOS下有 ...
- Redis入门到高可用(十九)——Redis Sentinel
一.Redis Sentinel架构 二.redis sentinel安装与配置 四.客户端连接Sentinel 四.实现原理—— 故障转移演练(客户端高可用) 五.实 ...
- java框架之SpringBoot(15)-安全及整合SpringSecurity
SpringSecurity介绍 Spring Security 是针对 Spring 项目的安全框架,也是 Spring Boot 底层安全模块默认的技术选型.它可以实现强大的 Web 安全控制.对 ...
- vs安装问题
1 首先windows update异常,导致vs2015的一个安装不上,先试着修一下: https://support.microsoft.com/zh-cn/help/2629484 如果提示:“ ...
- sap 软件架构
1:
- ATM目录结构
作者:高江平版本:1.0程序介绍: 实现ATM常用功能程序结构:atm实现|——README|——atm #ATM主程序目录| |——bin #ATM执行文件目录| | |——__init__.py| ...