《移动通信软件编程基础—Java语言》第4章.ppt_第1页
《移动通信软件编程基础—Java语言》第4章.ppt_第2页
《移动通信软件编程基础—Java语言》第4章.ppt_第3页
《移动通信软件编程基础—Java语言》第4章.ppt_第4页
《移动通信软件编程基础—Java语言》第4章.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

移动通信软件编程基础 Java IC-MSP 知识回顾 面象对象技术 类和对象 封装 类的定义及使用 类可用class来定义 类的变量和方法可被该类的实例访问 圆点符号用于访问对象的成员 构造方法在创建对象时初始化对象 包 使用package声明包 使用import导入包 类是具有相同属性和行为的一组对象的集合 对象是类的实例 隐藏对象实现细节的过程 使用户不能看到实现细节 IC-MSP 4 类和对象的高级特征 第章 IC-MSP 本章目标 理解继承及其特点 运用Java程序实现继承 理解多态及其特点 运用Java程序实现多态 掌握访问修饰符及方法修饰符 IC-MSP 继承 继承是一种机制,让一个类能够继承另一个类的 所有行为和属性。 v通过继承,一个类可以拥有已有类的所有功能。 v通过继承,所有类都以严格的层次结构来组织。 IC-MSP 继承 IC-MSP 子类 继承其他类的类叫子类,被继承的类叫做超 类(父类)。 继承的特点 层次结构 子类继承 父类的属性和方法 IC-MSP 使用Java实现继承 实现步骤: v步骤:编写父类 class Robot protected String name = “Anna“; Robot() void showDetail() System.out.println(“名称 - “ + name); v步骤:编写子类,使用关键字extends继承 父类 class WalkingRobot extends Robot WalkingRobotTest() void show() System.out.println(“从子类 WalkingRobot 中输出的信息 “); System.out.println(“机器人的名称 - “ + name); 父类名称 子类名称 IC-MSP 演示 使用Java实现继承 继承演示 IC-MSP 子类的构造方法 v子类构造方法的名称与类的名称相同 v在子类中调用父类构造方法,使用关键字super v调用父类构造方法的语法为: super(); 或 super(参数列表) ; v用super语句来调用父类的构造方法时,必须遵守 以下语法规则: 子类的构造方法中,通过super语句调用父类构造方法。 子类的构造方法中若有super语句,必须做为构造方法的 第一条语句。 IC-MSP 子类的构造方法 class Robot protected String name; protected String color; Robot(String name,String color) = name; this.color = color; void showDetail() System.out.println(“从父类 Robot 中输出的信息“); System.out.println(“名称 - “ + name); System.out.println(“颜色 - “ + color ); 父类的构造方法 class WalkingRobot extends Robot String sex; WalkingRobot(String name,String color,String sex) super(name,color); this.sex=sex; void show() System.out.println(“从子类 WalkingRobot 中输出的信息 “); System.out.println(“机器人的名称 - “ + name); System.out.println(“机器人的颜色 - “ + color); System.out.println(“=“); 子类的构造方法 调用父类构造方法 public class WalkingRobotTest WalkingRobotTest() public static void main(String args) WalkingRobot wr = new WalkingRobot(); wr.show(); wr.showDetail(); 调用子类创建的方法 调用继承自父类的方法 IC-MSP 演示 使用Java创建子类构造方法 子类构造方法演示 IC-MSP 多态 v多态是一种普遍存在的现象,如water的三种形 态:冰水汽等。也就是指“多种形式” 。 v多态使用不同的实例而执行不同操作。 v多态实现的方法包括方法重写和方法重载。 v软件系统支持多态的前提就是能够静态(编译时 )或者动态(运行时)地确定类型。 IC-MSP 多态 /*机器人类Robot的子类*/ class WalkingRobot extends Robot int legnumber;/腿的数量 WalkingRobot(String name,String color,int legnumber) super(name,color); this.legnumber = legnumber; void show() System.out.println(“从子类 WalkingRobot 中输出的信息 “); System.out.println(“机器人的名称 - “ + name); System.out.println(“机器人的颜色 - “ + color); System.out.println(“机器人的腿数量 - “ + legnumber); System.out.println(“=“); /*机器人类Robot的子类*/ class DrivingRobot extends Robot int drivenumber;/驱动的数量 DrivingRobot(String name,String color,int drivenumber) super(name,color); this.drivenumber = drivenumber; void show() System.out.println(“从子类 DrivingRobot 中输出的信息 “); System.out.println(“机器人的名称 - “ + name); System.out.println(“机器人的颜色 - “ + color); System.out.println(“机器人的驱动数量 - “ + drivenumber); System.out.println(“=“); 子类DrivingRobot的show方法 子类WalkingRobot的show方法 public class MoreState MoreState() public static void main(String args) Robot r = new Robot(“Blue“,“Black“); WalkingRobot wr = new WalkingRobot(“Lisa“,“blue“,4); DrivingRobot rr = new DrivingRobot(“Anna“,“pink“,1); r = wr; r.show(); r = rr; r.show(); 父类对象 r 指向子类对象 wr, r.show调用的为wr的show方法 父类对象 r 指向子类对象 rr, r.show调用的为rr的show方法 IC-MSP 演示 使用Java实现多态 多态演示 IC-MSP 方法重载 对于类的方法(包括从父类中继承的方法),如 果有两个方法的方法名相同,但参数不一致,那么可 以说,一个方法是另一个方法的重载。 class Robot protected String name = “Anna“; protected String color = “Pink“; Robot() Robot(String name,String color) = name; this.color=color; IC-MSP 方法重写 v在Java中,子类可继承父类中的方法,而不需要重新编 写相同的方法。 v有时子类并不想原封不动地继承父类的方法,而是想作 一定的修改,这就需要采用方法的重写。方法重写又称方 法覆盖。 v子类中的方法与父类中的某一方法具有相同的方法名、 返回类型和参数表,则新方法将覆盖原有的方法。 vsuper.methodname()用于调用父类中的方法 IC-MSP 方法重写 class Robot void show() System.out.println(“从父类 Robot 中输出的信息“); System.out.println(“名称 - “ + name); System.out.println(“颜色 - “ + color ); class WalkingRobot extends Robot void show() System.out.println(“从子类 WalkingRobot 中输出的信息 “); System.out.println(“机器人的腿数量 - “ + legnumber); 重 写 IC-MSP 演示 使用Java实现方法重写 方法重写演示 IC-MSP 访问修饰符 访问修饰符 使用访问修饰符,起到信息隐藏的作用 信息隐藏的原因 对任何实现细节所作的更改 不会影响使用该类的代码 防止用户意外删除数据 使类易于使用 访问修饰符的分类 控制对类、方法和 变量的访问的限定符 private protected public 默认修饰符 限定符static, 创建类方法和类变量 限定符final, 用于固定类、方法和变量的实现 限定符abstract, 用于创建抽象类和方法 IC-MSP private修饰符 v类中限定为private的成员,只能被这个类本身访 问。 v如果一个类的构造方法声明为private,则其它类不 能生成该类的一个实例。 class Robot private String name = “Anna“; private String color = “Pink“; private Robot(String name,String color) = name; this.color = color; void show() System.out.println(“从父类 Robot 中输出的信息“); System.out.println(“名称 - “ + name); System.out.println(“颜色 - “ + color ); System.out.println(“=“); 本类中成员可以使用其私有成员 类中的私有成员 public class DemoPrivate DemoPrivate() public static void main(String args) Robot wr = new Robot(“Lisa“,“blue“); wr.show(); 不正确:类Robot的 构造方法为私有成员 IC-MSP protected修饰符 class Robot protected String name = “Anna“; class WalkingRobot extends Robot void show() System.out.println(“机器人的名称 - “ + name); class DemoProtected public static void main(String args) WalkingRobot r = new WalkingRobot(); System.out.println(“机器人的名称 - “ + r.show(); protected成员能够被本类访问 protected成员能够被子类访问 (同一包或不同包) protected成员能够被 同一个包的类访问 IC-MSP 默认修饰符 package com.test; public class Robot String name = “Anna“; String color = “Pink“; public Robot(String name,String color) = name; this.color = color; void show() System.out.println(“从父类 Robot 中输出的信息“); System.out.println(“名称 - “ + name); System.out.println(“颜色 - “ + color ); System.out.println(“=“); 默认成员能够被本类访问 默认成员能够被 同一包中的类访问 import com.test.Robot; class WalkingRobot extends Robot int legnumber; WalkingRobot(String name,String color,int legnumber) super(name,color); this.legnumber = legnumber; void show() System.out.println(“从子类 WalkingRobot 中输出的信息 “); System.out.println(“机器人的名称 - “ + name); 不正确:默认成员不能被 不同包中的类访问 IC-MSP public修饰符 package com.test; public class AccessDemo public void mechod1() System.out.println(“一个公有的方法!任何类都可以访问。“); protected void mechod2() System.out.println(“一个受到保护的方法!只有子类可以访问。“); private void mechod3() System.out.println(“一个私有的方法!只有类本身才可以访问。“); package net.test; import com.test.*; public class OutAccessRun public static void main(String args) AccessDemo d = new AccessDemo(); d.method1(); d.method2(); d.method3(); 正确:公有方法 任何类可访问 不正确:保护方法 只能在子类中被访问 不正确:私有方法 只有本类能访问 IC-MSP 访问修饰符 位置private 默认protectedpublic 同一个类是是是是 同一个包内的类否是是是 不同包内的子类否否是是 不同包且不是子类否否否是 IC-MSP 演示 在Java中使用访问修饰符 访问修饰符演示 IC-MSP 静态变量 vstatic修饰符修饰的变量叫静态变量 v静态变量独立于类的实例,使用类去访问,而不 是类实例,所以也叫类变量 v静态变量的声明格式: static type classVar; v类变量仅在生成第一个对象时分配内存,所有实 例对象共享同一个类变量 v类变量可通过类名直接访问 IC-MSP 静态变量 class Robot static long count = 0; String name = “Anna“; String color = “Pink“; public Robot() count+; public Robot(String name,String color) = name; this.color = color; count+; public class DemoStatic public static void main(String args) Robot r1 = new Robot(“第1个机器人“,“color1“); Robot r2 = new Robot(“第2个机器人“,“color2“); System.out.println(“当前机器人的个数为:“ + Robot.count); 创建两个对象 count值为2 静态成员变量 IC-MSP 静态方法 vstatic修饰符修饰的方法叫静态方法 v静态方法独立于类的实例,使用类去访问,而不是类 实例,所以也叫类方法 v静态方法的声明格式: static returnType classMethod(paramlist) v静态方法使用规则:可以调用其他静态方法;必须访 问静态数据;不能使用super或this关键字 IC-MSP 静态方法 class Robot static long count = 0; String name = “Anna“; String color = “Pink“; public Robot() count+; public Robot(String name,String color) = name; this.color = color; count+; public static void displayCount() System.out.println(“当前机器人的个数为:“ + count); 静态方法 用于输出静态变量 public class DemoStatic public static void main(String args) Robot r1 = new Robot(“第1个机器人“,“color1“); Robot r2 = new Robot(“第2个机器人“,“color2“); Robot.displayCount(); 创建两个对象 调用静态方法输出count值为2 IC-MSP 演示 在Java中使用static修饰符 static修饰符演示 IC-MSP final修饰符 v限定符final用于类、方法和变量,指出它们将不能被 修改。 v对于类、方法和变量,final的含义分别为: final类不能被继承; final方法不能被子类覆盖; final变量的值不能被修改 final修饰变量,则成为常量 例如: final int variableName = 12; IC-MSP final修饰符 class Robot protected String name = “Anna“; protected String color = “Pink“; Robot(String name,String color) = name; this.color = color; final void show() System.out.println(“从父类 Robot 中输出的信息“); System.out.println(“名称 - “ + name); System.out.println(“颜色 - “ + color ); System.out.println(“=“); final修饰的方法 不能在子类中被重写 IC-MSP 演示 在Java中使用final修饰符 final修饰符演示 IC-MSP abstract修饰符 v由abstract修饰的方法叫抽象方法;由abstract修 饰的类叫抽象类 v抽象方法必须声明在抽象类中 v抽象方法语法: abstract type method_name(parameter_list); v声明抽象类语法:abstract class v父类中的某些抽象不包含任何逻辑,并需要在子类 中重写,子类提供这种抽象方法的实现细节 IC-MSP abstract修饰符 v抽象类不能被实例化 v构造方法和静态方法不能是抽象的 v父类的抽象方法往往在子类中实现 abstract class Robot protected String name = “Anna“; protected String color = “Pink“; Robot(String name,String color) = name; this.color = color; abstract void show(); 抽象类 抽象方法 class WalkingRobot extends Robot WalkingRobot(String name,String color) super(name,color); void show() System.out.println(“从子类 WalkingRobot 中输出的信息 “); System.out.println(“机器人的名称 - “ + name); System.out.println(“机器人的颜色 - “ + color); System.out.println(“=“); 实现抽象父类中的抽象方法 class DrivingRobot extends Robot int drivenumber; DrivingRobot(String name,String color,int drivenumber) super(name,color); this.drivenumber = drivenumber; void show() System.out.println(“从子类 DrivingRobot 中输出的信息 “); System.out.println(“机器人的驱动数量 - “ + drivenumber); 实现抽象父类中的抽象方法 public class DemoAbstract public static void main(String args) Robot r ; WalkingRobot wr = new WalkingRobot(“Lisa“,“blue“,4); DrivingRobot rr = new DrivingRobot(“Anna“,“pink“,1); r = wr; r.show(); r = rr; r.show(); IC-MSP 演示 在Java中使用abstract修饰符 abstract修饰符演示 IC-MSP 接口 v接口就是某个事物对外提供的一些功能的声明 v可以利用接口实现多态,同时接口也弥补了Java 单一继承的弱点 v使用interface关键字定义接口 v一般使用接口声明方法或常量,接口中的方法只 能是声明,不能是具体的实现 IC-MSP 接口的创建方法 / 定义方法的接口 public interface myinterface public void add(int x, int y); public void volume(int x,int y, int z); / 定义程序使用的常量的接口 public interface myconstants public static final double price = 1450.00; public static final int counter = 5; 接口中的方法必须为 public修饰的 接口中只能定义 public类型的静态常量 IC-MSP 接口的实现 class UserInterface implements MyInterface public void add(int x, int y)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论