JAVA 高级语言特征
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
19
方法的访问控制
不同 情形下 访问说 明符
public
protected default
private
同类
同包 子类
通用性
20
不同包父类与子类之间的访问
package com.Javabole; import cn.mybole.Test; public class Test2 extends Test {public void fn() { //pubMethod(); //proMethod(); //defMethod(); //priMethod(); } public static void main(String[] args) { } }
java
io System
lang String
2
类分组 package 语句
Java平台中的类与接口都是根据功能以包 组织的。 包机制的好处:
• 程序员容易确定包中的类是相关的,并且容易 根据所需的功能找到相应的类。 • 每个包都创建一个新的命名空间,因此不同包 中的类名不会冲突。 • 同一个包中的类之间有比较宽松的访问控制。
12
例3 final 与abstract的区别 package cn.mybole; class Test extends com.Javabole.Test2; {public static void main(String[] args) { Test2 t2=new Test2(); } } package com.Javabole; public final class Test2 { } 如果想把某个类设计成标准的类可以使用final 修饰符:如String类
27
高级访问控制——package
package Greek; class Alpha { int iampackage; void packageMethod() { System.out.println("packageMethod"); } } package Greek; class Beta { void accessMethod() { Alpha a = new Alpha(); a.iampackage = 10; √ a.packageMethod(); √ } }
26
高级访问控制——protected
package Latin; import Greek.*; class Delta extends Alpha { void accessMethod(Alpha a, Delta d) { a.iamprotected = 10; X d.iamprotected = 10; √ a.protectedMethod(); X d.protectedMethod(); √ } }
第五章 Java 高级语言特征
package 访问控制 final 关键字 静态变量、方法与初始化程序块 抽象类 Interface 内部类 其它
1
包(package)
包(package)是相关类与接口的一个集合,它提供访问控制与命名空 间管理。 为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问 题,Java引入了包(package)。
6
package cn.mybole; public class Test extends com.winsunlight.Test2 { public static void main(String[] args) { com.winsunlight.Test2 t=new com.winsunlight.Test2(); java.io.File f; System.out.println("test!"); } }
28
类变量(static /class variable)
在该类所有实例之间是共享的。在加载该类时,只分配 一次空间,并初始化。 例:class Employee { … static int com ; … } 则运行时, com e1 com e2 com e3 com
29
static静态变量
11
例3 public 与default的区别
package cn.mybole; //import com.javabole.Test2; class Test// public {public static void main(String[] args) {Test2 t2=new Test2(); //com. javabole.Test2 t2=new com. javabole.Test2();} } package cn.mybole; // package com.javabole; class Test2 // public { }
24
高级访问控制
class Alpha { private int iamprivate; boolean isEqualTo(Alpha anotherAlpha) { if (this.iamprivate == anotherAlpha.iamprivate) return true; else return false; } }
当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有 产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才 会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望 无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数 据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一 个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都 单独分配一个用于代表国家名称的变量。
3
例子-1:
package mybole; class Test { public static void main(String[] args) { System.out.println(" package test!");} }
4
创建包
用package语句指定源文件中的类属于一个特定包: package 包名 • 包定义语句在每个源程序中只能有一条, 即一个类只能属 于一个包。 •包定义语句必须在程序的第一行(之前可有空格及注释)。 •包名用“.‖ 分隔。 •Javac –d . 自动生成 在当前目录下生成包 javac –d . Test.java 在指定目录下生成包 javac –d E:\JavaLesson Test.java
17
方法的访问控制不同 情Fra bibliotek下 访问说 明符
public
protected default
private
同类
同包 子类
通用性
18
同包不类的访问
package cn.mybole; public class Test2 //extends Test { public static void main(String[] args) { Test t=new Test(); t.pubMethod(); t.proMethod(); t.defMethod(); t.priMethod(); } }
13
方法的说明符
方法的访问说明符(与访问权限相关的说明符) (1)public (2)protected (3)default(不加访问说明符时) (4)private 方法的其它修饰符 (1)static (2)final (3)abstract (4)native 14 (5)synchronized
注意:访问控制应用于class或type 层次,而不是对象层次。
25
高级访问控制——protected
允许类本身、它的子类、以及同一个包中其余的类访问这些成员。
package Greek; public class Alpha { protected int iamprotected; protected void protectedMethod() { System.out.println("protectedMethod"); } } package Greek; class Gamma { void accessMethod() { Alpha a = new Alpha(); a.iamprotected = 10; // legal a.protectedMethod(); // legal } }
5
import 语句
将package 引入源程序,格式: import 包名.*;//耗内存PDA、服务器耗时间 import 包名. 类名; import 语句必须在源程序之前,在package 声明之后。 [ package ….. ] //缺省是package . [import …. ] //缺省是import ng.* [类声明… ] ...
21
方法的访问控制
不同 情形下 访问说 明符
public
protected default
private
同类
同包
子类 通用性
22
不同包没有任何关系类之间的访问
package com.Javabole; import cn.mybole.Test; public class Test2 {public static void main(String[] args) { Test t=new Test(); t.pubMethod(); t.proMethod(); t.defMethod(); t.priMethod(); } }
方法的访问控制
不同 情形下 访问说 明符
public
protected default
private
同类
同包 子类 通用性
15
方法的访问控制
不同
情形下 访问说 明符
public
protected default
private
同类
同包 子类
通用性
16
同一个类当中不同访问说明符的方法访问
package cn.mybole; public class Test { public void pubMethod() // final { System.out.println("pubMethod");} protected void proMethod() // abstract ; { System.out.println("proMethod"); } void defMethod() { System.out.println("defMethod"); } private void priMethod() { System.out.println("priMethod"); } public static void main(String[] args) { Test t=new Test(); t.pubMethod(); t.proMethod(); t.defMethod(); t.priMethod(); }
23
高级访问控制--private
class Alpha { private int iamprivate; private void privateMethod() { System.out.println("privateMethod"); } }
class Beta { void accessMethod() { Alpha a = new Alpha(); a.iamprivate = 10; // illegal a.privateMethod(); // illegal } }
类文件也应该放在反映包名的一系列目录下。
9
源文件(.java)与类文件(.class)的管理
一般将源文件与类文件分别存放,可采用如下方式: 示例
10
类的说明符
类的访问说明符 (1)public (被不同包内的类访问) (2)default(不加访问说明符时,只能被 同一个包内的其它类进行访问) 类的其它修饰符 (1)final (不能派生子类,最终的类) (2)abstract
7
包名与包中类的存储位置
包分隔符相当于目录分隔符,包存储的路 径由包根路径加上包名指明的路径组成。 包的根路径由CLASSPATH环境变量指出。 %CLASSPATH%\abc\ financeDept
8
源文件(.java)与类文件(.class)的管理
源文件可以按照包名指明的路径放置。如
方法的访问控制
不同 情形下 访问说 明符
public
protected default
private
同类
同包 子类
通用性
20
不同包父类与子类之间的访问
package com.Javabole; import cn.mybole.Test; public class Test2 extends Test {public void fn() { //pubMethod(); //proMethod(); //defMethod(); //priMethod(); } public static void main(String[] args) { } }
java
io System
lang String
2
类分组 package 语句
Java平台中的类与接口都是根据功能以包 组织的。 包机制的好处:
• 程序员容易确定包中的类是相关的,并且容易 根据所需的功能找到相应的类。 • 每个包都创建一个新的命名空间,因此不同包 中的类名不会冲突。 • 同一个包中的类之间有比较宽松的访问控制。
12
例3 final 与abstract的区别 package cn.mybole; class Test extends com.Javabole.Test2; {public static void main(String[] args) { Test2 t2=new Test2(); } } package com.Javabole; public final class Test2 { } 如果想把某个类设计成标准的类可以使用final 修饰符:如String类
27
高级访问控制——package
package Greek; class Alpha { int iampackage; void packageMethod() { System.out.println("packageMethod"); } } package Greek; class Beta { void accessMethod() { Alpha a = new Alpha(); a.iampackage = 10; √ a.packageMethod(); √ } }
26
高级访问控制——protected
package Latin; import Greek.*; class Delta extends Alpha { void accessMethod(Alpha a, Delta d) { a.iamprotected = 10; X d.iamprotected = 10; √ a.protectedMethod(); X d.protectedMethod(); √ } }
第五章 Java 高级语言特征
package 访问控制 final 关键字 静态变量、方法与初始化程序块 抽象类 Interface 内部类 其它
1
包(package)
包(package)是相关类与接口的一个集合,它提供访问控制与命名空 间管理。 为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问 题,Java引入了包(package)。
6
package cn.mybole; public class Test extends com.winsunlight.Test2 { public static void main(String[] args) { com.winsunlight.Test2 t=new com.winsunlight.Test2(); java.io.File f; System.out.println("test!"); } }
28
类变量(static /class variable)
在该类所有实例之间是共享的。在加载该类时,只分配 一次空间,并初始化。 例:class Employee { … static int com ; … } 则运行时, com e1 com e2 com e3 com
29
static静态变量
11
例3 public 与default的区别
package cn.mybole; //import com.javabole.Test2; class Test// public {public static void main(String[] args) {Test2 t2=new Test2(); //com. javabole.Test2 t2=new com. javabole.Test2();} } package cn.mybole; // package com.javabole; class Test2 // public { }
24
高级访问控制
class Alpha { private int iamprivate; boolean isEqualTo(Alpha anotherAlpha) { if (this.iamprivate == anotherAlpha.iamprivate) return true; else return false; } }
当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有 产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才 会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望 无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数 据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一 个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都 单独分配一个用于代表国家名称的变量。
3
例子-1:
package mybole; class Test { public static void main(String[] args) { System.out.println(" package test!");} }
4
创建包
用package语句指定源文件中的类属于一个特定包: package 包名 • 包定义语句在每个源程序中只能有一条, 即一个类只能属 于一个包。 •包定义语句必须在程序的第一行(之前可有空格及注释)。 •包名用“.‖ 分隔。 •Javac –d . 自动生成 在当前目录下生成包 javac –d . Test.java 在指定目录下生成包 javac –d E:\JavaLesson Test.java
17
方法的访问控制不同 情Fra bibliotek下 访问说 明符
public
protected default
private
同类
同包 子类
通用性
18
同包不类的访问
package cn.mybole; public class Test2 //extends Test { public static void main(String[] args) { Test t=new Test(); t.pubMethod(); t.proMethod(); t.defMethod(); t.priMethod(); } }
13
方法的说明符
方法的访问说明符(与访问权限相关的说明符) (1)public (2)protected (3)default(不加访问说明符时) (4)private 方法的其它修饰符 (1)static (2)final (3)abstract (4)native 14 (5)synchronized
注意:访问控制应用于class或type 层次,而不是对象层次。
25
高级访问控制——protected
允许类本身、它的子类、以及同一个包中其余的类访问这些成员。
package Greek; public class Alpha { protected int iamprotected; protected void protectedMethod() { System.out.println("protectedMethod"); } } package Greek; class Gamma { void accessMethod() { Alpha a = new Alpha(); a.iamprotected = 10; // legal a.protectedMethod(); // legal } }
5
import 语句
将package 引入源程序,格式: import 包名.*;//耗内存PDA、服务器耗时间 import 包名. 类名; import 语句必须在源程序之前,在package 声明之后。 [ package ….. ] //缺省是package . [import …. ] //缺省是import ng.* [类声明… ] ...
21
方法的访问控制
不同 情形下 访问说 明符
public
protected default
private
同类
同包
子类 通用性
22
不同包没有任何关系类之间的访问
package com.Javabole; import cn.mybole.Test; public class Test2 {public static void main(String[] args) { Test t=new Test(); t.pubMethod(); t.proMethod(); t.defMethod(); t.priMethod(); } }
方法的访问控制
不同 情形下 访问说 明符
public
protected default
private
同类
同包 子类 通用性
15
方法的访问控制
不同
情形下 访问说 明符
public
protected default
private
同类
同包 子类
通用性
16
同一个类当中不同访问说明符的方法访问
package cn.mybole; public class Test { public void pubMethod() // final { System.out.println("pubMethod");} protected void proMethod() // abstract ; { System.out.println("proMethod"); } void defMethod() { System.out.println("defMethod"); } private void priMethod() { System.out.println("priMethod"); } public static void main(String[] args) { Test t=new Test(); t.pubMethod(); t.proMethod(); t.defMethod(); t.priMethod(); }
23
高级访问控制--private
class Alpha { private int iamprivate; private void privateMethod() { System.out.println("privateMethod"); } }
class Beta { void accessMethod() { Alpha a = new Alpha(); a.iamprivate = 10; // illegal a.privateMethod(); // illegal } }
类文件也应该放在反映包名的一系列目录下。
9
源文件(.java)与类文件(.class)的管理
一般将源文件与类文件分别存放,可采用如下方式: 示例
10
类的说明符
类的访问说明符 (1)public (被不同包内的类访问) (2)default(不加访问说明符时,只能被 同一个包内的其它类进行访问) 类的其它修饰符 (1)final (不能派生子类,最终的类) (2)abstract
7
包名与包中类的存储位置
包分隔符相当于目录分隔符,包存储的路 径由包根路径加上包名指明的路径组成。 包的根路径由CLASSPATH环境变量指出。 %CLASSPATH%\abc\ financeDept
8
源文件(.java)与类文件(.class)的管理
源文件可以按照包名指明的路径放置。如