包
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.有助于对象封装实现细节。