07 package and access rights

package

v      package (package) is a container class, designated category name used to save space.

v      since for each class Java compiler generates bytecode file, and the file name is the same as the class name, the class of the same name and therefore potential conflict. To solve this problem, Java provides a package to manage the class name space.

The general form of a package declaration:

       packagepkg; // Java source code in the first sentence

       pkg is the package name. Java with file system directory to store the package. Directory name and the package name exactly match.

v      a statement format multi-stage package:

 

       packagepkg1.pkg2.pkg3;

 

v      package in the file system hierarchy is also reflected in the strict

v      recommended better package hierarchy with company's domain name to create;

v      package name in all lowercase.

Import Package

v      Import package name (classname | *).;

 

       如:import java.io.FileInputStream;

       Recommended to use less *;

Class unnamed package

v      class has package can not access the default package (unknown packet) class.

§ famous package can not be called class package nameless;

Access control

v      package connecting code data and processing data. Another important attribute of the package while providing: access control. Access control, can prevent the object of abuse.

v      to restrict access by accessing the range indicator.

Access control

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. To prevent the user incorrectly modify the attributes. account objects setpassword

       4. help object encapsulates implementation details.

 

Reproduced in: https: //my.oschina.net/u/2552902/blog/543948

Guess you like

Origin blog.csdn.net/weixin_34236869/article/details/92326763