中国矿大计算机学院杨东平 jsxhbc@163.com 第5章 接口和包 中国矿大计算机学院杨东平 jsxhbc@163.com.

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
多元評量與 Greenfoot 簡介 南港高中高慧君. 演講大綱 多元評量 高中階段程式設計教學目標與困境 Greenfoot 快速入門 – 袋熊吃樹葉 – 沙灘螃蟹 Greenfoot 臺灣社群介紹 2.
第6章 对象和类.
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
第三讲 面向对象(上).
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第 9 章 物件的建構.
项目7 面向对象高级.
项目6 通用堆栈.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
第一章 面向对象程序设计.
第二章 JAVA语言基础.
第二部分 Java语言基础篇 第4章 Java语言与面向对象 (之一).
類別的繼承-一般關係: 繼承是宣告的類別繼承現存類別的部份或全部的成員資料和方法 , 新增額外的成員資料和方法或覆寫和隱藏繼承類別的方法
Ch07 介面與多重繼承 物件導向程式設計(II).
JAVA程序设计 (03) JAVA Programming
第5章 进一步讨论对象和类.
1 Department of Computing.
再回首: Java关键字 数据类型:byte boolean char double float int long short ,
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
Ch08 巢狀類別 物件導向程式設計(II).
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
Java基础 JavaSE异常.
Classes Lecturer: 曾學文.
CHAPTER 9 建構方法 ROBERT.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
第六章 类的扩展与继承.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
程式設計實作.
CH09 套件 物件導向程式設計(II).
Java软件设计基础 5. 继承与多态.
Java程序设计 第9章 继承和多态.
Ch01 物件與類別複習 物件導向系統實務.
類別的繼承 Vehicle Car.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
Java程序设计 第2章 基本数据类型及操作.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
简单工厂模式.
第7章 繼承/多型/介面 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第二章 Java基本语法 讲师:复凡.
第7章 异常处理.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
主编:钟元生 赵圣鲁.
Interfaces and Packages
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
辅导课程十一.
第二章 Java基本语法 讲师:复凡.
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
辅导课程十二.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
Summary
Presentation transcript:

中国矿大计算机学院杨东平 jsxhbc@163.com 第5章 接口和包 中国矿大计算机学院杨东平 jsxhbc@163.com

第5章 接口和包 本章主要讲述如下内容 :  接口的定义和使用;  接口与抽象类的异同点;  包的定义和使用;

接口概述 引入接口的原因 在程序设计中经常遇到这样一个问题:有些类互不相关,但却具有相似的方法。并且这些方法在各个类中的实现互不相同。我们不能为这些类定义一个共同的父类,但又希望在程序中体现出它们共同的接口。

接口的定义和应用 接口是一系列常量和空方法的集合,它提供了多个类共同的方法,但不限制每个类如何实现这些方法。

接口的定义和应用 (续) Java接口允许多继承其他接口,声明一个接口的语法格式: [public] interface interfaceName [extends super-interface-List]{ type constantName=value; type methodName( parameter lists); …… } 接口中变量的默认修饰符为:public final static 接口中方法的默认修饰符为:public abstract 接口中不能声明任何实例变量和构造方法。

接口的定义和应用 (续) Java允许一个类同时实现多个接口,相当于实现多继承的功能;

接口的定义和应用(续) 声明一个接口的语法格式: [public] interface interfaceName [extends super-interface-List]{ type ConstantName=value; type MethodName( Parameter lists); }

接口的定义和应用(续) 如果一个类实现多个接口,应该在接口名之间用逗号隔开。 当一个类实现接口时,必须实现接口中给出的空方法,若实现接口的类是一个抽象类,可以把实现接口的任务交给子类去实现。 例5-1:接口的定义与实现 源程序 运行

接口的定义和应用(续) 接口中定义的变量实际上是常量,必须给出它们的初始值,实现接口的类可以自由引用这些常量。 例5-2: 接口的定义与实现 源程序 运行

接口的定义和应用(续) 在类中实现接口中方法时,方法的特征必须和接口中声明的方法特征保持一致; 实现方法时必须在方法前加上public; 若一个类没有对接口中的方法具体实现,那么必须将该类声明为abstract类。 例:

接口的定义和应用(续) interface inter { // 接口 void methodA( ); } abstract class Derived1 implements inter { // 此处不需要写出methodA( )的原型 } class Derived2 extends Derived1{ public void methodA( ) { // 实现方法 System.out.println("Hi,methodA");

接口和抽象类的异同点 接口和抽象类的相同点: 都有空的方法,都必须在子类中实现这些方法; 都不能用new关键字来创建这两种类型的对象; 都可以具有继承关系; 接口和类一样可以具有public属性;

接口和抽象类的异同点(续) 接口和抽象类的不同点: 在抽象类中,空的方法必须加abstract关键字,而在接口中不需要; 在抽象类中,除空的方法外,可以定义实例变量和非空的方法,而在接口中,只能定义常量和空的方法; 接口允许多继承,类仅支持单继承;

包 包的功能:包用于防止名字空间的冲突。 包的含义:包是一组类和接口的集合,同一个包内的类不能重名,但不同包内的类可以重名。包实际上提供了一种命名机制和可见性限制机制。每个类名和接口名都包含在某个包中。 名字空间的全限定访问:全限定名的组成方式为: packageName.className.variableName packageName.className.methodName(parameter-lists) 包名由分离的字段组成,段与段之间用“.”隔开。

包(续) 在Java中可以将自己写的类,按一定的方法归属于不同的子目录中(包); Java中的包与C++中的名字空间相似;

package语句 package语句告诉编译器当前类属于哪个包。如果没有package语句,类就存放在无名的缺省包中(即当前目录中); 格式: package pkgl[ .pkg2[ .pkg3]];

import语句 有三种方法使用包中的成员:用全限定名、引入包和引入类; 用全限定名: 如: graphics.Rectangle myRect=new graphics.Rectangle(); 用import语句装入包中的某个类或接口,格式: import pgk1.[pkg1…].className|interfaceName; 如: import graphics.Circle; … Circle myRect=new Circle();

import语句(续) 引入包中的所有成员,格式: import pkg1.[pkg2…].*; 如: import graphics.* …… Circle myRect=new Circle(); Rectangle myRectangle=new Rectangle(); *只代表这个包中的类和接口,不包括该包的子包; 采用*号不影响程序的运行性能,但会影响编译速度。指明具体类比引入整个包更为合理。 Java总是隐含地引入java.lang包

包应用举例 例1: package Base; // 将该类存放在d:\myjava\Base包中 public class Base { int friend_data=1; // 友元成员 public int public_data=2; // public成员 private int private_data=3; // private成员 protected int protected_data=4; // protected成员 }

包应用举例 (续) 例2 package Derived; // 将Base类存放在Derived包中 import Base.*; // 需要使用Base包中的类 public class Derived extends Base{ Base a=new Base( ); // 为了让testData类能调用该方法,修改为public public void dataUse( ) { // System.out.println(a.friend_data); // 不能访问 System.out.println(a.public_data ); // System.out.println(a.private_data); // 不能访问 // System.out.println(a.protected_data); // 不能访问 }

包应用举例 (续) 例3: // testData.java文件的内容如下: import Derived.*; //需要使用Derived包中的类   // 该类位于工作目录,不需要package语句 public class testData { public static void main(String args[ ]) { Derived d=new Derived( ); d.dataUse( ); }