第六章 JAVA语言中的面向对象特性 6.1 类 6.2 对象 6.3 面向对象的特性 6.4 抽象类、接口和Inner Class.

Slides:



Advertisements
Similar presentations
1 类的严谨定义格式如下: [ 类修饰符 ] class 类名 [extends 父类名 ] [implements 接口列表 ] { 数据成员 成员方法 } 类的严谨定义.
Advertisements

第3章 使用类和对象编程 软 件 学 院 朱士明 副教授.
项目三 Java面向对象程序设计 任务一 了解面向对象程序设计的基本概念 任务二 掌握类的使用方法 任务三 熟悉对象的创建与使用方法
第4章 Java中的几个关键字 Java 语言编程技术.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第四章 类与对象.
第3章 面向对象的编程技术.
第四章 类 和 对 象.
第4章 类 和 对 象.
第四章 类、对象和接口.
第四章 对象与类 掌握面向对象程序设计语言的特点 理解对象、类,类和对象的关系 掌握类,成员变量,方法的定义 掌握构造方法的定义
第三讲 面向对象(上).
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第3章 面向对象程序设计.
配合< Java面向对象程序设计>例子源代码一起使用
Java的面向对象程序设计.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
第二章 JAVA语言基础.
重庆大学计算机学院 《Java程序设计之网络编程》 教学课件 重庆大学计算机学院
第三章 Java面向对象程序设计 3.1 Java的类和对象 3.2 域和方法 3.3 访问控制符 3.4 继承
第五章 Java面向对象编程基础 类:现实世界中实体的抽象集合。 5.1定义类 定义类的过程就是定义类的属性和服务的过程;
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
类与对象 Java 实用技术4 类与对象
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
JAVA程序设计 (03) JAVA Programming
第5章 进一步讨论对象和类.
第4章 类、对象和接口 4.1 编程语言的几个发展阶段 4.11 abstract 类和abstract方法 4.2 类
行 言 面向对象程序设计基础(下) 类属性 类方法 包 限定符 接口 内部类.
第四章 Java面向对象程序设计.
第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程序设计 第4章 类、包和接口.
程式設計實作.
CH09 套件 物件導向程式設計(II).
Java习题解析.
Java程序设计 第9章 继承和多态.
辅导课程六.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
C/C++/Java 哪些值不是头等程序对象
第7章 包及访问控制权限 7.1 包的基本概念 7.2 系统常见包 7.3 包的导入 7.4 访问控制权限修饰符 7.5 jar命令的使用.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
C++复习3 ----类的继承与派生.
C#面向对象程序设计 $6 深入理解类.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Interfaces and Packages
第二章 Java语法基础.
3.5 Java的包与访问控制符.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第二章 Java基础语法 北京传智播客教育
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
Presentation transcript:

第六章 JAVA语言中的面向对象特性 6.1 类 6.2 对象 6.3 面向对象的特性 6.4 抽象类、接口和Inner Class

6.1 类

6.1.1 类的创建

6.1.2 成员变量 举例:public static int num ; [修饰符] [static][final] 变量类型 变量名 ; 修饰符:public, protected, private表示访问控制。 static : 表示变量是静态变量。可以有类直接调用,并被所有的 类的实例共享。 final : 表示变量是一个常量。在程序中不能被修改。 transient、volatile : 用的很少,了解其用途。 举例:public static int num ;

6.1.3 成员方法 举例:public static void IncrNum() [修饰符] [static][final | abstract] [native] 返回类型 方法名(参数列表) throws 异常列表 ; 修饰符:public, protected, private表示访问控制。 static : 表示该方法是静态方法。可以有类直接调用。 final : 表示该方法不能被重载。 abstract : 表示该方法。 native : 表示该方法由其他程序语言完成。如C++ 举例:public static void IncrNum() { num++ ; }

类的举例: public class Car{ public String color; //成员变量 public int speed; public static int saleNum ; //静态变量 public Car(){ //构造方法 color=“Red”; speed=100; } public void turnLeft(){ //成员方法 …… public void turnRight(){ public static void incrSaleNum(){ //静态方法 saleNum++ ;

6.1.4 方法重载 概念:多个方法具有相同的方法名,但参数表不同。 如: public void turnLeft(float angle){ …… } public void turnLeft(float angle, int speed){

6.1.5 构造方法 是一个特殊的方法,每个类都有 用来实例化该类,生成一个对象 构造方法和类同名,且无返回值 构造方法可以不显式写出,有JAVA系统提供缺省的构造方法 构造方法也可以显式写出,并可以被重载。 构造方法只能由new操作符调用,不能有类、对象调用 构造方法举例Point.java

构造函数的多态

6.2 对象 6.2.1 对象的生成 对象是类的实例,其生命周期为:生成、使用和清除 格式: Type objectName = new Type(参数表); 说明: 1) Type objectName 声明了一个类型为Type的对象,但并没有 分配内存空间 2)new操作符为objectName 分配内存空间,并返回该对象的一个 引用。 3)调用构造方法Type(参数表),进行初始化。

6.2.2 对象的使用 6.2.2 对象的清除 格式: 对象名. 变量; 对象名. 方法; 举例 见PointUsing.java 对象名. 变量; 对象名. 方法; 举例 见PointUsing.java 6.2.2 对象的清除 JAVA的垃圾回收机制负责对象的清除。

6.3 包 在编程中,包可以分为两个部分:JAVA系统包、程序 员编制的包。 在JAVA中,包的概念和其他编程语言中的函数库的概 念是相同的,也可以称为类库。如: java.io.*; java.util.*; com.mypackage.db.*; 包是类和接口的集合,通常将功能相似的类放在一个 包里,如同把mp3文件放到一个music目录下。这样 使得程序功能清楚,结构分明。 包是一种松散的类的集合(没有明确的命名、存放规 则)。但是为了统一、一般采用约定俗成的规则。

6.3.1 创建包 创建包的格式: package 包名.子包名; 该语句必须放在.java文件的第一个非注释行。 创建包就是在当前文件夹下创建一个子文件夹。如: package MyPackage; package MyPackage.SubPackage;

6.2.2 程序包的引用(import语句) 通常一个类只能引用与它在同一个包中的类。如果要使用其他包中的public类,则可以使用以下4种方法: 使用包名、类名前缀 java.util.Date d = new java.util.Date(); 加载需要使用的类 import java.util.Date; Date d = new Date(); 加载整个包 import java.util.*; Vector v = new Vector();

CLASSPATH类似于DOS中的PATH,从形式上看就是一系列的目录。它指明了所有类的默认存放的根路径。 在程序需要装载某个类时,JDK就到系统中搜索这个类。 . G:\2000java\src … Cs2000.hfut.ch6 JDK

6.4 面向对象的特性 封装性 继承性 多态性 其他特性

6.4.1 封装性 JAVA中对象就是一组变量和方法的封装。 封装实现了使用者和设计者的分离。提高了程序的重用性。 通过封装,实现了模块化和信息隐藏。 JAVA中的访问控制修饰符(P54 Example) public, protected, package, private 修饰符 类 包 子类 所有类和包 private √ package protected public

格式: [修饰符] class 类名 extends 父类 { 6.2. 继承性 1. 创建子类 格式: [修饰符] class 类名 extends 父类 { 类体; } 如: public class MyApplet extends java.applet.Applet public class MyApplication extends Frame public class MyApp1 注意:在父类的构建器中,Java会自动插入对子类构建器的调用。 见Cartoon.java

class A{ int a1=1; public int a2=2; protected int a3=3; private int a4=4; int geta4() {return a4;} } class B extends A{ int b=5; int sum() { return a1+a2+a3+geta4()+b; } public class ClassInheritance{ public static void main(String[] a){ A aa = new A(); System.out.println(“A:”+aa.a1+”\t”+aa.a2+”\t”+aa.a3+”\t”+aa.geta4()); B bb = new B(); System.out.println(“B:”+bb.a1+”\t”+bb.a2+”\t”+bb.a3+”\t”+aa.geta4()+ ”\t”+bb.sum());

2. 成员变量的隐藏和方法的重写 Class Point { int x,y; void setPoint(int a,int b){ 2. 成员变量的隐藏和方法的重写 Class Point { int x,y; void setPoint(int a,int b){ x=a;y=b; } Class Point3D extends Point { int x,y,z; //父类的变量被隐藏 void setPoint(int a,int b,int c){ //父类的方法被重写 x=a;y=b;z=c;

3. super 在子类中需要调用父类的同名方法或使用父类的同名 变量时,使用关键字super来指明当前调用的是父类的成员 变量或方法。 见教材Chess.java示例

6.3 多态性 1. 编译时多态 运行时多态 表现为方法名相同,而参数表不同。 6.3 多态性 1. 编译时多态 表现为方法名相同,而参数表不同。 典型:System.out.println();它底参数有很多种。 运行时多态 取得一个对象句柄,并将其作为父类型句柄使用的行为就叫作“上溯造型” 1) Music.java 2) Music2.java 3) Shapes.java

Shapes.java中类的结构图

3. 对象状态的判断 由于子类对象可以作为父亲类对象使用。那么我们有时需要判断这个对象究竟属于哪个类。JAVA提供instanceof关键字。 见InstanceofTest.java

4. final关键字 5. static关键字 修饰变量 修饰方法 修饰类 用static修饰的变量、方法称为类变量、类方法 类变量只有一个副本。所有的对象共享。 类方法只能使用类变量 类方法可以被类调用,也可以被对象调用 Emaple P63

4. java.lang.Object类 是JAVA中所有类的父类(间接父类)。其中定义了所有对象基本的状态和方法。 equals() final getClass() toString() finalize() notify(),notifyAll()和wait()

6.5 抽象类和接口 6.5.1 抽象类 使用abstract修饰的类叫做抽象类 使用abstract修饰的方法叫做抽象方法 6.5 抽象类和接口 6.5.1 抽象类 使用abstract修饰的类叫做抽象类 使用abstract修饰的方法叫做抽象方法 抽象类的意图是为从它派生出去的所有类都创建一个通用接口。 从而实现运行时多态。 抽象类不一定要包含抽象方法。 如果一个类中包含了一个以上的abstract方法,那么这个类必须 是abstract。 abstract类不能被实例化,只能作为父类来派生子类。 由抽象类派生的非抽象子类必须实现父类中的所有抽象方法。 抽象类、抽象方法的表现形式。 举例:Music4.java

6.5.2 接口 1. 关于接口的几个问题 是一个更“纯”的抽象类。(不能含有非abstact方法,变量) 接口这样描述自己:“对于实现我的所有类,看起来都应该象我现在 这个样子”。 接口只包含常量和方法的定义,没有变量和方法的实现。 接口可以实现多重继承的功能。 若使用接口,我们可以同时获得抽象类以及接口的好处。

2. 接口的定义 3. 接口的实现 使用implements关键字 举例InterfaceTest.java 接口声明格式: [public] interface 接口名 extends 接口列表{ … } 接口体 接口体包含常量和方法的定义 接口举例 InterfaceDmo.java 3. 接口的实现 使用implements关键字 举例InterfaceTest.java

6.5 Inner Class 内部类:一个类内部嵌套另一个类的定义。 Inner Class 可以使用包含它的类(外层)的静态和成员变量。 Inner Class可以定义为abstract,private或protected。 Inner Class若被声明为static,就不能使用成员变量。 Inner Class不是static,就不能拥有static变量。 Inner Class可以节省编译后字节码文件的大小,但使用Inner Class造成程序结构不清楚。