当前课程知识点:Java程序设计 >  第二章 类与对象 >  2.2-2-数据成员 >  2.2-2-数据成员

返回《Java程序设计》慕课在线视频课程列表

2.2-2-数据成员在线视频

2.2-2-数据成员

下一节:2.2-3-方法成员

返回《Java程序设计》慕课在线视频列表

2.2-2-数据成员课程教案、知识点、字幕

大家好

欢迎回来继续学习

java语言程序设计

这一节我们来学习

如何在类里面声明数据成员

数据成员呢

是用来表示对象的状态

也可以用来存放

在整个类的所有对象之间

要共享的数据

后面我要紧接着

就给大家介绍

有实例的成员

有类的成员

那么类里面定义的

这些数据成员呢

他的类型

可以是任何数据类型的

比如说基本类型的变量

或者是另外一个类的对象

数组 这些都可以

现在我们来看一下

数据成员他声明的语法形式

同样这里有很多关键字

都是放在方括号里面的

放在方括号里面的关键字呢

都是可有可无的

也叫做可选项

在需要的时候才写它

不需要的时候

可以不用写

我们刚开始的时候呢

涉及到这个关键字呢

也比较少

大多数关键字呢

在后面呢

都会给大家在后续章节中介绍

好 那我们看到

必须有的内容是什么呢

必须有的内容是数据类型

你要说明

这个数据类型刚才说了

可以是基本类型的

也可以是类类型

还可以是数组这些

因为数组也是对象嘛

在数据类型后面呢

就像我们在C语言里面

定义变量 全局变量

局部变量一样

在这里我们在类题里面

定义变量

语法也是这样定义的

那么这里面

关键字public protected private

称为访问控制符

是用来控制

对类成员的访问权限的

static呢

指明这是一个静态成员变量

或者叫做类的变量

在这一章中

我们就要讲的

final指的是这个变量

也就是这个属性的值

是不能被修改的

transien指的是变量

不需要序列化

也就是说当我们后面给大家介绍

这个文件IO的时候呢

就会遇到我们想把整个对象

整体存盘

将来再读取回来

那么这个时候

比如说有一些密码

这样的数据

敏感数据

可能我们不想

把它存到磁盘文件中去

怕泄密

那么这样呢

这个时候我们就可以对这些属性

用transien来修饰

那么存盘的时候

就不会存它

最后这个volatile呢

指的是这个变量呢

他是一个共享变量

好 现在我们来了解一下

实例变量

也叫属于对象的属性

那么实例变量呢

他实际上是用来描述

每个对象的属性的

他从所有的这同类型对象中

抽象出来

每个对象都要有这些属性

那么就把他定义为实例变量

但是对象与对象之间

这个实例变量的值

也就是它的属性的值

往往是不同的

恰恰是这些不同的值

区分此对象与彼对象

我们要访问一个实例变量呢

就要通过对象名去访问

那么语法形式呢

就是对象名点实例变量名

但是是不是对于所有的实例变量

我们都可以这样访问呢

也不是的

还要注意我们稍后

给大家介绍的

这个属性或者是变量的

它的访问控制权限

现在我们来看一个圆类的例子

这个类呢非常简单

我们在其中指定一个圆的半径

然后呢我们另外写一个类

shape tester

来测试来使用这个圆类

当然了

真正的我们要设计一个圆的时候

肯定除了半径

应该还有其他的功能

现在我们先从简单的例子开始

我们看到在这个shape tester类中

测试类中呢

定义了一个main方法

一个主方法

然后在这里

我们构造圆类的对象

步骤是什么呢

先定义一个圆类的引用X

然后用new运算

去获得一个新的圆对象

把他的引用附给X

然后我们输出一下X

以及呢这个半径radius的值

我们想象一下

输出的应该是什么呢

首先输出这个半径是几呢

并没有对他进行初始化

然后我们把X这个对象

整个当字符串输出

又会得到什么呢

我们看一下运行结果

首先我们看到把X这个对象

整个当作字符串输出

看到的还类名

然后后面@

然后呢一串数字

然后这个半径呢

输出了我们看到这是个零

这个零大家应该可以理解

我们前面讲过

在java中

数值类型的变量

如果他没有显示的被初始化的话

他就会默认的初始化为零

而前面这一串是怎么来的呢

是因为所有的类里面

都默认有一个to string方法

这个to string 方法

干点什么事儿呢

他先取得这个类的类名

转成字符串放在这

然后输出一个@符号

然后呢调用这个hash code 的方法

把这个对象的(哈希码)

转成十六进制形式的字符串

这样来输出

那么可以说将一个对象

转成这样的一个形式输出呢

并不是很有意义

没关系

后面的章节呢

我会告诉大家

怎么样去自己写一个to string

覆盖这个已有的to string

让我们可以把这个对象

整个当字符串输出

而且输出的信息呢

按照我们自己期望的意义去输出

现在我们再来看一个

矩形类的例子

这里我们定义了一个矩形类

它的数据呢

有宽和高

这个宽和高呢

在类里面

我们就给了他初始值了

所以在这个测试方法里面呢

测试类的main方法里面

我们构造一个矩形对象的时候

那么这个new的矩形对象

他没有进行初始化

但是呢宽和高不会是

默认的零

因为在类里面

就定义好了初始值了

而这个圆对象呢

跟上一个例题一样

依然是没有初始化

那么他默认初始化为零

这个时候呢

我们将X和Y

都转成字符串来输出

那么我们看到

编译运行以后

得到的两个对象

转成字符串的结果

我在前一个例题里面解释了

是类名@后面是对象的哈希码

那我们看一下

这个时候

在这个程序中

圆和矩形的两个对象

X Y

他们的状态是什么呢

这个圆里面

它的半径是零

而这个矩形呢

他的宽和高有值

但是问题是

你就是再多构造几个矩形对象

他的宽和高的值

也会是一样的

则后面我们学了如何初始化以后

我们就可以让每个对象

诞生的时候

他们的数值不一样

现在呢我们只会做这点事情

那么什么是类变量呢

类变量是为整个类的所有对象

共享的数据

那么这样的数据呢

我们就把它作为类变量

类变量呢

也成为静态变量

要用static关键字来修饰

这样的变量

在整个类中

他只有一个值

他不会存在于每个对象值中

在类中存一份就够了

他是在类初始化的时候

就被初始化的

在什么情况下

我们需要定义类变量

或者静态变量呢

比如说类中所有对象

都相同的这样的共同属性

那么我们可以在类里面

只存一份就可以了

还有呢需要经常共享的数据

或者呢系统中

需要用到的一些常量值

这些我们都可以定义成类变量

他的使用格式呢

我们可以直接通过类名点

类变量名就可以用了

没有对象名也可以

当然我们通过这个类的对象名

去使用他

也没有问题

也可以是对象名

或者是叫实例名点类变量名

都可以使用它

现在我们看看这个例子

在我们前面见过的

这个圆类里面呢

我们增加一个类变量

也叫静态变量

这加了static

这呢定义的是一个常量pi

也就是说这个圆里面的

所有对象

他们都共享这个常量

当然了

计算所有的圆对象的

相关值的时候

用到的圆周率

当然应该是一样的

这种情况下

当我们生成

这个圆类的实例的时候

在每个实例中

是不存这个 pi 的值的

pi 的值呢

他是只存一份

存在这个类中

现在呢我们来进行测试

还是在这个测试类中呢

在他的main方法中

我们构造圆对象

然后引用给了X

我们通过X点π来输出一下

这个π的值

然后接下来呢

我们再用类名

circle点pi

再输出一下pi 的值

我们看看一样不一样

从运行结果

我们看到两次输出是一样的

好 那我们再通过类名点pi

circle点pi

去改变它的值

把它重新附值为3.14

然后我们再用不同的方法

通过对象名去访问pi

通过类名去访问pi

得到的数值还是一样的

这就验证了我前面说的

你访问静态成员的时候

可以用类名去访问

也可以用对象名去访问

好 在这一节呢

我们学习了数据成员

我们在类中

声明的数据成员呢

可以有两类

一类呢是属于每个对象的

叫做实例属性

或者叫做实例变量

另一类呢

是用static的修饰的

属于整个类的

有整个类的所有对象所共享

叫类变量

或者叫类的属性

接下来下一节呢

我们要学习方法成员

Java程序设计课程列表:

第一章 Java语言基础知识

-1.0-导学

--1.0-导学

--JDK的安装与配置01

--JDK的安装与配置02

--JDK的安装与配置03

--编辑并执行第一个java程序01

--编辑并执行第一个java程序02

--编辑并执行第一个java程序03

--eclipse的安装和配置01

--eclipse的安装和配置02

--eclipse的安装和配置03

--使用eclipse进行Java的开发01

--使用eclipse进行Java的开发02

--使用eclipse进行Java的开发03

-1.1-Java与面向对象程序设计简介

--1.1.1 Java与面向对象程序设计简介

--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介

-1.2-基本数据类型与表达式

--1.2.1-基本数据类型与表达式

-第一章 Java语言基础知识--1.2-基本数据类型与表达式

-1.3-数组

--1.3.1-数组

-第一章 Java语言基础知识--1.3-数组

-1.4-算法的流程控制

--1.4.1-算法的流程控制

--第一章 Java语言基础知识--1.4-算法的流程控制

-1.5-第一章小结

--1.5.1-第一章小结

-第一章编程练习题

-课件

--外部链接

第一章续-习题讲解视频

-Java环境配置、Eclipse使用、Helloworld程序详解

--JAVA的安装和配置

--编写并执行第一个Java程序及Java的跨平台性

--eclipse的安装和配置

--使用eclipse建立Java项目、编写和运行Java程序

--Java注释和Eclipse中的注释操作

--详解HelloWorld程序

-Java数据类型

--Java数据类型介绍

--Java整数类型

--Java浮点类型

--Java字符类型和布尔类型

--数据类型实战

--数据类型转换

--Java强制类型转换精度损失示例与表达式中的数据类型转换

-Java数组

--Java数组介绍、声明与使用

--一维数组的初始化与length属性

--数组索引的原理与使用

--二维数组的介绍与使用

-Java变量

--Java的变量

-命令行参数

--命令行参数的介绍

第二章 类与对象

-2.0-导学

--2.0-导学

-2.1-面向对象方法的特性

--2.1-面向对象方法的特性

--第二章 类与对象--2.1-面向对象方法的特性

-2.2-1-类声明与对象创建

--2.2-1-类声明与对象创建

--第二章 类与对象--2.2-1-类声明与对象创建

-2.2-2-数据成员

--2.2-2-数据成员

--第二章 类与对象--2.2-2-数据成员

-2.2-3-方法成员

--2.2-3-方法成员

--第二章 类与对象--2.2-3-方法成员

-2.2-4-包

--2.2-4-包

--第二章 类与对象--2.2-4-包

-2.2-5-类的访问权限控制

--2.2-5-类的访问权限控制

--第二章 类与对象--2.2-5-类的访问权限控制

-2.3-1-对象初始化

--2.3-1-对象初始化

--第二章 类与对象--2.3-1-对象初始化

-2.3-2-内存回收

--2.3-2-内存回收

--第二章 类与对象--2.3-2-内存回收

-2.4-枚举类

--2.4-枚举类

--第二章 类与对象--2.4-枚举类

-2.5-应用举例

--2.5-应用举例

-2.6-第2章小结

--2.6-第2章小结

-第二章编程练习题

-课件

--第二章课件

第三章 类的重用

-3.0-导学

--3.0-导学

-3.1.1-3.1.2-类继承的概念和语法

--3.1.1-3.1.2-类继承的概念和语法

--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法

-3.1.3-隐藏和覆盖

--3.1.3-隐藏和覆盖

--第三章 类的重用--3.1.3-隐藏和覆盖

-3.2-Object 类

--3.2-Object 类

--第三章 类的重用--3.2-Object 类

-3.3-终结类与终结方法

--3.3-终结类与终结方法

--第三章 类的重用--3.3-终结类与终结方法

-3.4-抽象类

--3.4-抽象类

--第三章 类的重用--3.4-抽象类

-3.5-泛型

--3.5-泛型

--第三章 类的重用--3.5-泛型

-3.6-类的组合

--3.6-类的组合

-3.7-小结

--3.7-小结

-第三章编程练习题

-课件

--课件

第四章 接口与多态

-4.0-导学

--导学

-4.1-接口

--接口

--第四章 接口与多态--4.1-接口

-4.2.1-4.2.2-类型转换

--类型转换

--第四章 接口与多态--4.2.1-4.2.2-类型转换

-4.2.3-方法的查找

--方法的查找

--第四章 接口与多态--4.2.3-方法的查找

-4.3-多态的概念

--多态的概念

--第四章 接口与多态--4.3-多态的概念

-4.4-多态的应用举例

--多态的应用举例

--第四章 接口与多态--4.4-多态的应用举例

-4.5-构造方法与多态性

--构造方法和多态性

--第四章 接口与多态--4.5-构造方法与多态性

-4.6-本章小结

--本章小结

-第四章编程作业

-课件

--课件

第五章 输入输出

-5.0-导学

--5.0-导学

-5.1.1-5.1.2-异常处理的概念

--5.1.1-5.1.2-异常处理的概念

--第五章 输入输出--5.1.1-5.1.2-异常处理的概念

-5.1.3-5.1.5-异常的处理

--5.1.3-5.1.5-异常的处理

--第五章 输入输出--5.1.3-5.1.5-异常的处理

-5.2-输入输出流的概念

--输入输出流的概念

--第五章 输入输出--5.2-输入输出流的概念

-5.3.1-写文本文件

--写文本文件

--第五章 输入输出--5.3.1-写文本文件

-5.3.2-读文本文件

--读文本文件

--第五章 输入输出--5.3.2-读文本文件

-5.3.3-写二进制文件

--写二进制文件

--第五章 输入输出--5.3.3-写二进制文件

-5.3.4-读二进制文件

--读二进制文件

-5.3.5-File类

--File类

-5.3.6-处理压缩文件

--处理压缩文件

-5.3.7-对象序列化

--对象序列化

-5.3.8-随机文件读写

--随机文件读写

-5.4-本章小结

--本章小结

-课件

--课件

第六章 对象群体的组织

-6.0-导学

--导学

-6.1-Java集合框架介绍

--Java集合框架介绍

--第六章 对象群体的组织--6.1-Java集合框架介绍

-6.2-主要接口及常用的实现类

--6.2-主要接口及常用的实现类

--第六章 对象群体的组织--6.2-主要接口及常用的实现类

-6.3-常用算法

--常用算法

-6.4-数组实用方法

--6.4-数组实用方法

-6.5-基于动态数组的类型(Vector, ArrayList)

--基于动态数组的类型(Vector, ArrayList)

-6.6-遍历Collection

--遍历Collection

-6.7-Map接口及其实现

--Map接口及其实现

-6.8-第6章小结

--第6章小结

-课件

--课件

第七章 图形用户界面

-7.0-导学

--导学

-7.1-绘图

--绘图

-7.2-Swing基础

--Swing基础

-7.3-Swing的层次

--Swing的层次

-7.4-布局管理

--布局管理

-7.5-内部类

--内部类

-7.6-事件处理的基本概念

--事件处理的基本概念

-7.7-事件派发机制

--事件派发机制

-7.8-顶层容器

--7.8-顶层容器

-7.9-中间层容器(一)

--7.9-中间层容器(一)

-7.10-中间层容器(二)

--7.10-中间层容器(二)

-7.11-原子组件(一)

--7.11-原子组件(一)

-7.12-原子组件(二)

--7.12-原子组件(二)

-7.13-原子组件(三)

--7.13-原子组件(三)

-7.14-其它Swing特性

--7.14-其它Swing特性

-7.15-第7章小结

--7.15-第7章小结

-课件

--课件

2.2-2-数据成员笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。