我的JAVA学习笔记(中国大学mooc翁恺)2.2

			  **2.2 访问属性/包/类变量及类方法**

2.2.1 访问属性之private
//引入:我们已经知道,封装是java语言三大特性封装、多态、继承三大特性之一。在类的设计时,我们有一个非常直接了当的手段来保证其封装性,即:所有的成员变量都必须是private的,这样就避免别人任意使用你的内部函数

(1)访问属性private是针对类来说的,即所private的成员变量有在其所在的类里才能调用,也就是说,private可见范围的起点是类,而不是对象,所在类里的对象可以调用private的成员变量。

(2)与之截然相反的访问属性是public,公开的,一般我们所定义的类都是要加前缀public,
但是这里要注意一下,一个编译单元(即一个.java文件)最多只有一个public,这个public的名字与创立.class文件时取得名字是一致的,
也可以一个public前缀也没有,这样方法就默认为friendly属性,可在同一个包里被自由调用。

(3)所有public的函数,只是用来实现这个类的对象或累自己要提供的服务的,而不是用来直接访问数据的。除非对数据的访问就是这个类及对象的服务。简单地说,给每个成员变量提供一对用于读写的get/set函数也是不合适的设计。

(4)之所有大部分函数都是用public做前缀是因为方便被调用。这就涉及到包的知识

2.2.2 包
(1)Java中的一个包就是一个类库单元,包内包含有一组类,它们在单一的名称空间之下被组织在了一起。这个名称空间就是包名。

可以使用import关键字来导入一个包。例如使用import java.util.*就可以导入名称空间java.util包里面的所有类。所谓导入这个包里面的所有类,就是在import声明这个包名以后,在接下来的程序中可以直接使用该包中的类。例如:

import java.util.*
导入就是util里的所有类,但是我们一般不提倡无脑的导入所有类,因为可能在之后的代码编写中会遇到重合的类产生冲突。

(2) 当编写一个Java源代码文件时,此文件通常被称为编译单元。
每个编译单元都必须有一个后缀名.java,而在编译单元内有且仅有一个public类,否则编译器就不会接受。

该public类的名称必须与文件的名称相同(包括大小写,但不包括后缀名.java)。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,因为它们不是public类,

而且它当编译一个.java文件(即一个编译单元)时,在.java文件中的每个类都会有一个输出文件,而该输出文件的名称与.java文件中每个类的名称相同,只是多了一个后缀名.class。

因此在编译少量.java文件之后,会得到大量的.class文件。每一个.java文件编译以后都会有一个public类,以及任意数量的非public类。

因此每个.java文件都是一个构件,如果希望许许多多的这样的构件从属于同一个群组,就可以在每一个.java文件中使用关键字package。而这个群组就是一个类库。

如果使用package语句,它必须是.java文件中除注释以外的第一句程序代码。如果在文件的起始处写

(3) 作为一名程序员,我们应该牢记:package和import关键字允许做的是将单一的全局名称空间分割成各自独立封闭的名称空间,

使得无论多少人使用Internet以及Java开始编写类,都不会出现与我们的类名称相冲突的问题,

因为我们的类是被封闭在我们自己定义的独立的名称空间里面的,而非在公共的全局名称空间里面。

2.2.3 类变量和类方法(静态变量)

//引入:类是规范,类是定义,类决定了对象含有的成员变量和成员函数
(1)static 修饰成员变量的时候,就使该成员变量变成了一个类变量,类变量在整个过程中只需定义一次,一旦改变,接下来该变量出现的地方都会自动发生相同的改变
(2)static修饰成员方法它也能在未创建任何类的实例的情况下被调用,类方法只能在访问静态变量和类之间的调用中使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值