07包和访问权限

v      包(package)是类的容器,用来保存划分类名空间。

v      由于Java编译器为每个类生成一个字节码文件,且文件名与类名相同,因此同名的类有可能发生冲突。为了解决这一问题,Java提供包来管理类名空间。

package声明的通用形式:

       packagepkg; //放在Java源代码的第一句

       pkg就是包名。Java用文件系统目录来存储包。目录名和包名严格匹配。

v      一个多级包的声明格式:

 

       packagepkg1.pkg2.pkg3;

 

v      包层次也是在文件系统中严格反映出来的

v      建议比较好的包层次用公司的域名来创建;

v     包名全部用小写。

包导入

v      import 包名.(classname|*);

 

       如:import java.io.FileInputStream;

       建议少用*;

无名包的类

v      有包的类无法访问默认包(无名包)的类。

§        有名包不能调用无名包中的类;

访问控制

v      封装将数据和处理数据的代码连接起来。同时封装提供另一个重要属性:访问控制。通过访问控制,可以阻止对象的滥用。

v     通过访问指示符来限制访问范围。

访问控制

v      当一个类可以被访问时,对类内的成员变量和成员方法而言,其应用范围可以通过施以一定的访问权限来限定。

             同一个类中   同包不同类       不同包

private          ★                               -

default          ★          ★                                 *

protected       ★          ★                               #

public            ★          ★                          ★   +

v      public: 任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法。

v       protected:同一类,同一包可以使用。不同包的类要使用,必须是该类的子类。

v       private:不允许任何其他类存取和调用。

v       friendly(default,前边没有修饰字的情况):在同一程序包中出现的类才可以直接使用它的数据和方法.

什么是封装

v      将数据连同函数捆绑在一起,形成新的类型,这被称为封装。

v      java语言中,对象就是对一组变量和相关方法的封装,其中变量表明了对象的状态,方法表明了对象具有的行为。

v     通过对象的封装,实现了模块化和信息隐藏。通过对类的成员施以一定的访问权限,实现了类中成员的信息隐藏。

 

 

要点补充:

1:package包。

       包(package)是类的容器,用来保存划分类名空间。

       逻辑意义对类进行划分。

 

       解决同名的类的冲突问题。

       1.能够区分系统名字系统的类

       2.实施访问权限控制

       3.有助于划分和组织JAVA应用中的类order/store/customer

 

2:package的命名规范:

       A:package必须写在源文件的第一行。

       B:package名一律使用小写。

       C:(建议)package使用公司的域名倒过来。

       www.softfz.com

       com.softfz.项目名称.模块名称

 

3:包在逻辑上是以命名空间划分的。

 

   在物理上是以文件系统路径划分的。

  com.softfz.one

   将类编译好后,要将编译好的类放到com/softfz/one这个文件夹下面

 

   运行

  java com.softfz.one.类名;

同一层包结构的类相互之间不需要导入import

//解决同名类的冲突问题(导入一个全类名写一个)

 

 

4:javac -d选项的作用

       -d:指定类文件(class) 存放的位置。

       javac-d ./ Test_03.java

 

带package的类与classpath如何运行

 

C:/>java -classpath F:\Lesson9aa.bb.cc.dd.ee.Test_03

 

包的导入(import):同一个包底下的类可以相互调用。

 

不同的包底下的类,需要用到另一个包底下的类时,需要使用import关键字导入所需要的类路径。

 

有名包与无包名访问的问题:

 

       无名包底下的类可以访问有名包底下的类。

       有名包底下的类不可以访问无名包底下的类。

 

==============修饰符================

1.修饰类、变量和方法

2.灵活运用,可使软件程序真实模拟现实中的系统,提高软件系统的可重用性、可维护性、可扩展性、及系统的运行性能。

3.一般有:abstract、static、public、protected、private、final

 

=============访问控制修饰符=================

适合:类、成员方法、成员变量、不适合局部变量

作用:面向对象的基本思想之一是封装并实现细节并且公开接口。JAVA语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而只向使用者暴露接口,但隐藏实现

细节。

================访问权限控制===================

首先要搞清楚什么叫访问?这里在讲到的访问是有二种的:

 

一、就是在类中通过“XXXx = new XXX(); x.YYY;”的形式来访问(不妨叫此种形式为“外部访问”吧,此种访问形式除了可以应用到自己与子类中外,还可以应用在其他类中访问,其中XXX表示定义的类型,这里可为Base与Sub、SubSub,YYY为方法或属性);

 

二、就是this.YYY的形式来访问(不妨叫此种形式为“内部访问”吧,不过这种访问形式只能应用在在自己的类或是子类中)。

 

private:同一个类中的访问权限。其它的类都不能访问用private修饰的方法和属性。

default:同一个包下面的类都可以访问。不同包是无法访问使用默认default下面类。

protected:同一个包下面的类都可以访问,不同包是无法访问,但是在不同包下面,是该类的子类就可以访问protected修饰的变量和方法。

 

访问级别  访问控制修饰符  同类   同包   子类 不同的包

公开      public          √      √      √    √

受保护    protected       √      √      √    -

默认                      √      √      -   -

私有      private         √      -      -    -

 

ClassC extends ClassA --这是级联体--可以认为是一个对象【包含父类数据,自然能访问受保护属性】

ClassA a = new ClassA();---这是一个完全独立的对象,跟C类没有任何关系,它在堆空间只是在C类空间区段中。

========仅适合类和类成员

EclipseIDE常用的操作

       1:建工程(将源文件与输出文件分开)

       2:建类,并为类取包名

       3:

alt+/ :智能感知

ctrl+shift+O:导入相应的包

ctrl+shif+F:格式化代码的功能

 

 

5.封装:

指隐藏对象的属性和实现细节,仅仅对外公开接口。系统之间通过接口通信。

优点:

安全、重用

1.便于使用者正确理解和使用系统,防止修改系统属性。电线电视。

2.有助于建立各系统之间的松耦合关系,提高系统独立性,当一个系统的实现发生变化,只要它的接口不变,就不会影响其他系统。

3.提高系统可重用性。干电池:可重用的独立系统。

4.降低构造大型系统的风险。相机损坏,干电池。

 

 

封装的原则

1.把尽可能多的东西藏起来,对外提供简捷的接口【washer】===方法

系统的封装程度越高,相对独立性就越高,使用起来更方便。

on/off/settimer/inputwater/dischargewater/wash/dehydrate

on/inputwater/settimer/wash/dischargewater/dehydrate/off

on/off/setmode/start/suspend

 

2。把所有属性藏起来

       1.更符合真实世界中外因通过内因起作用的规律。

       2.能够灵活控制控制属性的读和修改的访问级别。electricalPowerMeter

       3.防止使用者错误地修改属性。account对象setpassword

       4.有助于对象封装实现细节。

 

你可能感兴趣的:(07包和访问权限)