开发基于Java语言的银行卡模拟系统 教学课件 ppt 作者 孙华林第六章 第六章 访问权限控制及接口

上传人:E**** 文档编号:89500305 上传时间:2019-05-26 格式:PPT 页数:25 大小:325.50KB
返回 下载 相关 举报
开发基于Java语言的银行卡模拟系统 教学课件 ppt 作者 孙华林第六章 第六章 访问权限控制及接口_第1页
第1页 / 共25页
开发基于Java语言的银行卡模拟系统 教学课件 ppt 作者 孙华林第六章 第六章 访问权限控制及接口_第2页
第2页 / 共25页
开发基于Java语言的银行卡模拟系统 教学课件 ppt 作者 孙华林第六章 第六章 访问权限控制及接口_第3页
第3页 / 共25页
开发基于Java语言的银行卡模拟系统 教学课件 ppt 作者 孙华林第六章 第六章 访问权限控制及接口_第4页
第4页 / 共25页
开发基于Java语言的银行卡模拟系统 教学课件 ppt 作者 孙华林第六章 第六章 访问权限控制及接口_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《开发基于Java语言的银行卡模拟系统 教学课件 ppt 作者 孙华林第六章 第六章 访问权限控制及接口》由会员分享,可在线阅读,更多相关《开发基于Java语言的银行卡模拟系统 教学课件 ppt 作者 孙华林第六章 第六章 访问权限控制及接口(25页珍藏版)》请在金锄头文库上搜索。

1、开发基于Java语言的银行卡模拟系统,教师:孙华林,第6章访问权限控制及接口,技能目标 掌握三种权限访问方式:public、protected、private 理解并掌握final、static、abstract修饰符的使用方法 掌握Java接口的定义、实现及使用 理解面向接口编程的思想并能应用接口进行编程,上机任务 使用面向接口编程技术继续升级Bank系统: 在项目中理解面向接口编程的思想 正确理解、使用静态成员编写代码 提高系统的可扩展性 提高系统的可维护性,第6章访问权限控制及接口,开发基于java语言的银行卡模拟系统,6.1 类及类中成员的访问权限控制,Java提供了四种访问权限:pu

2、blic、protected、private和缺省。 1public(公有) 被public修饰的成员变量和成员方法可以在所有的类中访问。所谓在某类中访问某成员变量是指在盖勒的法国女法中给该成员变量赋值、输出其值、在表达式中应用其值;所谓在某类中访问某成员方法是指在该类的方法中调用该成员方法。所以在所有类的方法中可以使用被public修饰的成员变量,调用被public修饰的成员方法。 2protected(保护) 被protected修饰的成员变量和成员方法可以在声明它们的类中访问,在该类的子类中访问,也可以在与该类位于同一个包的类中访问,但不能在位于其他包的非子类中访问。 3private(

3、私有) 被private修饰的成员变量和成员方法只能在声明它们的类中访问,而不能在其他的类(包括其子类)中访问。 4缺省 缺省是指不使用权限修饰符。不使用权限修师傅修饰的成员变量和成员方法可以在声明它们的类中访问,也可以在与该类位于同一个包的类中访问,但不能在位于其他的包的类中访问。,开发基于java语言的银行卡模拟系统,6.1 类及类中成员的访问权限控制,如下示例6-1为访问权限修饰符的例子。Time类和MyTime2类存放于文件MyTime2.java中。 示例6-1 在Eclipse中编译此文件时,系统提示如下图6-1错误提示。,这是什么原因呢?,开发基于java语言的银行卡模拟系统,6

4、.1 类及类中成员的访问权限控制,要想在MyTime2类中将11赋给hour,可以采用的方案有多种,如在Time类中,将hour声明为public、protected或默认权限,或者在MyTime2类中调用Time类中具有public权限的方法setTime(11,0,0)。在这两种方案里,我们提倡后一种实现方式。 接下来,我们不得不谈谈面向对象编程的第三大特征封装性(encapsulation)。 封装性是面向对象的核心特征之一,它提供了一种信息隐藏技术。这意味着类以外的代码往往不能直接使用类的数据,而只能通过方法来访问。(想想有什么好处?) 那到底什么叫封装呢?封装就是将属性私有化,提供公

5、有的方法访问私有属性。 到底该如何实现封装呢?具体做法就是:修改属性为私有性(private)来限制对属性的访问,并为每个属性创建一对公有(public)的取值(getter)方法和赋值(setter)方法。请看示例6-2所示。 示例6-2 运行结果如下图,开发基于java语言的银行卡模拟系统,6.1 类及类中成员的访问权限控制,从上面代码我们可以看出,类animal中所有的属性都被private修饰,即私有不能在其他类中直接访问这些被private修饰的属性。但是我们另外定义了三对get和set方法,分别用于对对应的属性值的获取和设值操作。比如在测试类中可以直接使用cat.setName(“

6、花花”);语句对name属性进行赋值操作。当然也可以使用setName()方法来获取name的值了。 当然,在eclipse中,我们只需要定义好相关属性,而这些get和set方法可以自动生成,从而提高了开发效率。,开发基于java语言的银行卡模拟系统,6.2 修饰符,6.2.1 final 修饰符 经常,程序员在编写程序的过程中,出于安全性或者是面向对象的设计上的考虑,有时会希望一些类不能被继承,或可能需要定义一个不会改变的类成员。这在Java编程中该如何去实现呢?在这里,我们将会借助于final修饰符(关键字)。 1final修饰变量 final可以用来修饰变量,此时要注意:声明变量时必须将

7、其初始化,声明为final的变量不会在每个实例中都占用内存,也就是说,可以认为被final修饰的变量就是常量。 例如,如果声明了如下成员变量: final int i = 2; 那么,在程序中就不能再给i赋予新的值,否则将产生编译错误。 2final修饰方法 出于安全考虑,有些方法不允许被覆盖。final可以修饰方法,被其修饰的方法将不能被覆盖或重写。 3final修饰类 出于安全考虑,有些类不允许被继承。final可以修饰类,被final修饰的类将不能被继承。 final修饰方法及类的示例如下示例6-3所示。,开发基于java语言的银行卡模拟系统,6.2 修饰符,当编译时,出现如下图错误:,

8、如果把类Mother中修饰方法sum()的关键字final去掉,则示例6-3修改后的输出结果如下图,开发基于java语言的银行卡模拟系统,6.2 修饰符,6.2.2 static修饰符 关键字static可以用来修饰变量和方法。被static修饰的类的成员方法和成员变量常称为静态成员,这些静态成员可以直接通过类名直接引用。如:类名.变量名;类名.方法名。请看下面示例6-4所示的static修饰成员变量。 示例6-4 示例6-4的运行结果,实例化对象stu1时,调用构造方法将stu1的成员变量name和address分别初始化为“张嘎”和“常州机电学院信息工程系软件技术专业”,将Student成

9、员变量count更改为1。实例化对象stu2时,调用构造方法将stu2的成员变量name和address分别初始化为“王二小”和“机电学院信息系计算机网络技术专业”,将Student的成员变量count更改为2。此时输出stu1.name、stu1.address和stu1.count的值将得到图6-7中的第一行结果。 继续执行:Student.count = student.count+1; 将Student成员变量count更改为3,输出stu2.name、stu2.address和stu2.count的值将得到上图中的第二行结果。 同样,static也可以修饰成员方法,被static修饰

10、的成员方法称之为静态成员方法。,开发基于java语言的银行卡模拟系统,6.2 修饰符,6.2.3 abstract修饰符 被abstract关键字修饰的类是抽象类。它是一种没有具体对象的概念类,用来定义一般的状态和行为,并不能被实例化。如下所示: abstract class className 抽象类中包括属性、构造方法和抽象方法。所谓抽象方法就是这个方法不包含任何逻辑,也即仅仅提供此方法的名称和声明,没有方法的主体,这样的抽象方法必须由abstract来修饰。关于抽象方法的示例可参见下一节内容。,开发基于java语言的银行卡模拟系统,6.3 Java接口,6.3.1 接口的定义和实现 Ja

11、va中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,也即抽象方法。因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 1)接口的定义包括接口声明和接口体。接口声明的格式如下: public interface interfaceNameextends listOfSuperInterface extends 子句与类声明的extends子句基本相同,不同的是一个接口可有多个父接口,用逗号隔开,而一个类只能有一个父类;接口体包括常量定义和方法定义。 下面是一个简单的接口的小例子。利用类实现Sayhello接口的方法,我们可以

12、在测试类test中调用Girl和Boy类中的Say()方法来实现对男生和女生Say Hello!如示例6-5所示。 示例6-5 /定义一个接口PersonSayHelloInterface,其中有个抽象方法Say() package czmec.java.ch06; interface PersonSayHelloInterface void Say(); ,开发基于java语言的银行卡模拟系统,6.3 Java接口,2)接口的实现: 一旦接口被定义,一个或多个类可以实现该接口。在类的声明中用implements子句来表示一个类实现某个接口。在该类体中可以使用接口中定义的常量,而且它必须实现接

13、口中定义的所有方法,否则改类就应该声明为抽象类。 一个类可以实现多个接口,在implements子句中各接口名用逗号分开。 示例6-5续: /定义类Girl实现接口PersonSayHelloInterface package czmec.java.ch06; public class Girl implements PersonSayHelloInterface /应该实现接口中的所有方法 public void Say() System.out.println(“女孩说:”+“你好,男孩!“); ,开发基于java语言的银行卡模拟系统,6.3 Java接口, 示例6-5续: /定义类Boy

14、实现接口PersonSayHelloInterface package czmec.java.ch06; public class Boy implements PersonSayHelloInterface public void Say() System.out.println(“男孩说:”+“你好,女孩!“); 示例6-5续: /集成测试类 public class test public static void main(String args) PersonSayHelloInterface girl = new Girl(); PersonSayHelloInterface boy

15、 = new Boy(); girl.Say(); boy.Say(); ,开发基于java语言的银行卡模拟系统,6.3 Java接口,6.3.2 如何定义接口中的常量 我们已经学习到在Java中使用修饰符final可以来定义常量。通过上一节的学习,我们还知道,在接口中定义抽象方法时可以省略abstract关键字,当系统在编译时会自动加上public static final的修饰符。那么在接口中如何声明常量呢? 类似的,在Java接口中声明的变量在编译时也会自动加上public static final的修饰符,因此下面示例中的两段代码上相互等价的。 示例6-6 public interfa

16、ce Interface String a=”我是一只小花狗”; String b= “我是一只小花猫”; /接口中声明的变量在编译时也会自动加上public static final的修饰符,如下所示。 public interface Interface public static final String a=”我是一只小花狗”; public static final String b= “我是一只小花猫”; ,开发基于java语言的银行卡模拟系统,6.3 Java接口,6.3.3 使用接口的好处 程序示例6-7 一个学校里边,有两种人:学生、老师。他们都要吃饭和睡觉。 这样执行的结果就是学生回寝室睡觉,去食堂吃饭 .,如果把main中的代码换成如下: Person teacher = new Teacher(); School school = new School(); school.kai

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号