当前课程知识点:Java程序设计 >  第二章 类与对象 >  2.2-5-类的访问权限控制 >  2.2-5-类的访问权限控制

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

2.2-5-类的访问权限控制在线视频

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

下一节:2.3-1-对象初始化

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

2.2-5-类的访问权限控制课程教案、知识点、字幕

大家好

欢迎继续学习

JAVA语言程序设计

这一节我们来学习

类的访问控制权限

下来我们来看一下这张表

这张表说明了

在什么情况下

类可以被访问

那么一个类

它无论是public类型

还是无修饰的

也就是(00:33)默认类型的

都可以被

在同一个包中的其它类访问

但是呢

只有public类型

可以被不同包中的类访问

而无修饰的

也就是默认的这个类呢

只能被同一个包中的

其它类访问

不仅类的访问权限

是可以控制的

可以定义它是否public

类的成员

也可以逐个去定义

它的访问控制权限

在java中的

类的成员有这样几种

访问控制权限

有public也称公有的

那么它是最宽泛的一种

访问控制权限

还有呢保护类型的

还有私有类型的

以及呢什么都不写

我们说它是默认类型的

或者叫缺少类型

这样几种

接下来呢

我们看一个表

这个表呢

给大家列出了

不同类型的访问控制权限

它控制了类的成员

在什么范围内可以被访问

那从这张表我们看到呢

public是最宽泛的一种

访问控制权限

而private呢

是最严格的

或者说范围最窄的

这个表中

所列出的类成员的

访问控制权限

它的前提是在

我们这个类可以被看到

可以被访问的前提之下

也就是说

如果这个类能够被访问

那么它的公有成员

在任何地方

都是可以被访问的

而保护成员它的作用呢

主要在于有继承关系的时候

那么这样的保护成员呢

它就可以被子类的

其它方法去访问

不管这个子类跟超类

是否在一个包中

那么无修饰的

也就是我们说默认的

这种访问控制权限呢

是包内的

也就是说

同一个类中的其它方法

可以访问这种无修饰的

没有修饰访问控制权限

也就是说

默认访问控制权限的

数据成员和方法成员

同一个包中的这个类的子类

或者同一个包中的类

即使不是子类

也都可以访问

这个默认的成员

就是无访问控制权限修饰的

private呢

是最为严格的控制

也就是说它只能

对同一个类中的

其它方法访问

而别的类中

是看不见另外类中

private成员的

不管它是不是在同一个包中

现在我们将原来设计过的

这个圆类呢

进行一下修改

把这个半径设成私有的

半径设成私有成员以后

我们能不能依然在测试类中

给它直接赋值呢

我们尝试一下

这个时候

需要重新再编译一下

这个圆类

以及呢它的测试类

结果我们发现

编译测试类的时候

出现语法错误了

为什么呢

因为类的私有成员

在另外一个类中

是不能够被直接访问的

那么怎么办呢

后面呢会给大家介绍

怎么样通过公有接口

来访问私有成员

解决这个错误

刚才我们在例子中看到了

如果我们将类的数据成员

设成私有的

那么在另外一个类中呢

就不能直接访问这个成员了

如果我们需要

使用它的数据怎么办

比如说我们需要使用圆类的

半径这个数据怎么办

那么就需要在圆类中呢

提供公有的接口方法

通常呢

我们叫它get方法

和set方法

get方法

用于获取数据成员的值

或者说获取这个对象的属性

而set方法

用于设置数据成员的值

或者说设置对象的属性

那么get方法呢

通常是以英文单词

get开头

然后后面呢

紧接着是实例变量的名字

比如说要取得Radius

这个数据成员的值

并且返回

那么我们就用

Radius作为方法名

那虽然Radius这个成员名

它的首字母的是小写

通常我们变量的首字母

都是小写

但是在get方法中

要把Radius的首字母R大写

这是一般的惯例

那么set方法呢

是用于设置变量属性值的

比如说我们在圆类中

可以写一个set Radius

这个方法

然后我们用参数值R

去设置这个圆对象的半径值

那么get方法和set方法

它都是公有的接口

因此呢

我们在(类)外需要使用

圆类的Radius

这个数据的时候呢

就可以通过get方法

和set方法来访问它

现在我们再考虑一个问题

如果说我们在某个方法内部

定义的局部变量

或者说这个方法的形式参数

它的名字与类中定义的

非静态的数据成员名字

如果重名了怎么办

那么这个时候

我们需要知道

不同的变量

它的作用域是什么

那么如果说

我们局部变量或者形参

与类的非静态成员变量重名了

那么在局部范围内呢

我们使用的就是

这个在更小范围内

局部范围内定义的变量

那么这个时候

如果我们依然需要访问

类的成员变量

那怎么办呢

这个时候呢

我们可以this关键字

this关键字呢

它就表示当前对象自身

可以指代当前对象自身

比如说我们在set Radius

这个方法中

如果它的形参名字

也叫Radius

那么不就跟圆类的

非静态数据成员

Radius半径

它们就重名了吗

有的同学可能想

那我刻意不要写重名

不就没事了吗

其实在set方法中

让这个形参名字

跟它要设置的这个变量名

也就是属性名相同

这其实是很常用的

一种处理方式

这样会使得

这个set方法的可读性很好

我们一看这个形参名

就会知道

这个参数是干什么用的

它应该是用来设置

Radius值的

那么在这种情况下

如果说我们将Radius

赋值给Radius

就造成了这个形参

局部变量

它自身给自身赋值了

但是本意肯定不是这样

本意我们是希望

给当前对象的

Radius属性去赋值

那么这个时候呢

我们在赋值运算符左边

就要写this.radius

表示这是当前对象的属性名

或者是说

它的非静态成员名

那么右边那个呢

才是我们的局部变量

也就是这个形参Radius

好 在这一节呢

我们学习了类和类成员的

访问控制方法

我们可以通过

不同的关键字来控制

类它在什么范围内

可见可以被访问

还有呢

当类本身可见的情况下

可以被访问的情况下

类的成员分别有多少种

不同的访问控制权限

它们分别代表在什么范围内

可以访问

好这一节的内容就是这些

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-5-类的访问权限控制笔记与讨论

也许你还感兴趣的课程:

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