《移动通信软件编程基础Java语言.pptx》由会员分享,可在线阅读,更多相关《移动通信软件编程基础Java语言.pptx(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、4类和对象的高级特征 第章第1页/共46页本章目标理解继承及其特点运用Java程序实现继承理解多态及其特点运用Java程序实现多态掌握访问修饰符及方法修饰符第2页/共46页继承 继承是一种机制,让一个类能够继承另一个类的所有行为和属性。v通过继承,一个类可以拥有已有类的所有功能。v通过继承,所有类都以严格的层次结构来组织。第3页/共46页继承 第4页/共46页子类 继承其他类的类叫子类,被继承的类叫做超类(父类)。继承的特点 层次结构 子类继承 父类的属性和方法 第5页/共46页使用Java实现继承 实现步骤:v步骤:编写父类class Robot protected String name=
2、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);父类名称 子类名称第6页/共46页演示 使用Java实现继承继承演示第7页/共46页子类的构造方法 v子类构造方法的名称与类的名称相同 v在子类中调用父类构
3、造方法,使用关键字super v调用父类构造方法的语法为:super();或 super(参数列表);v用super语句来调用父类的构造方法时,必须遵守以下语法规则:子类的构造方法中,通过super语句调用父类构造方法。子类的构造方法中若有super语句,必须做为构造方法的第一条语句。第8页/共46页子类的构造方法 class Robot protected String name;protected String color;Robot(String name,String color)this.name=name;this.color=color;void showDetail()Syst
4、em.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(机器
5、人的名称-+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();调用子类创建的方法 调用继承自父类的方法 第9页/共46页演示 使用Java创建子类构造方法子类构造方法演示第10页/共46页多态 v多态是
6、一种普遍存在的现象,如water的三种形态:冰水汽等。也就是指“多种形式”。v多态使用不同的实例而执行不同操作。v多态实现的方法包括方法重写和方法重载。v软件系统支持多态的前提就是能够静态(编译时)或者动态(运行时)地确定类型。第11页/共46页多态 /*机器人类Robot的子类*/class WalkingRobot extends Robot int legnumber;/腿的数量 WalkingRobot(String name,String color,int legnumber)super(name,color);this.legnumber=legnumber;void show(
7、)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)s
8、uper(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 M
9、oreState()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方法第12页/共46页演示 使用Java实现多态多态演示第13页/共
10、46页方法重载 对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一致,那么可以说,一个方法是另一个方法的重载。class Robot protected String name=Anna;protected String color=Pink;Robot()Robot(String name,String color)this.name=name;this.color=color;第14页/共46页方法重写 v在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。v有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重
11、写又称方法覆盖。v子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。vsuper.methodname()用于调用父类中的方法第15页/共46页方法重写 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 中输出
12、的信息);System.out.println(机器人的腿数量-+legnumber);重写第16页/共46页演示 使用Java实现方法重写方法重写演示第17页/共46页访问修饰符 访问修饰符使用访问修饰符,起到信息隐藏的作用信息隐藏的原因对任何实现细节所作的更改不会影响使用该类的代码防止用户意外删除数据使类易于使用访问修饰符的分类控制对类、方法和变量的访问的限定符privateprotectedpublic默认修饰符限定符static,创建类方法和类变量限定符final,用于固定类、方法和变量的实现限定符abstract,用于创建抽象类和方法第18页/共46页private修饰符 v类中限定
13、为private的成员,只能被这个类本身访问。v如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。class Robot private String name=Anna;private String color=Pink;private Robot(String name,String color)this.name=name;this.color=color;void show()System.out.println(从父类 Robot 中输出的信息);System.out.println(名称-+name);System.out.println(颜色-+color
14、);System.out.println(=);本类中成员可以使用其私有成员 类中的私有成员 public class DemoPrivate DemoPrivate()public static void main(String args)Robot wr=new Robot(Lisa,blue);wr.show();不正确:类Robot的构造方法为私有成员 第19页/共46页protected修饰符 class Robot protected String name=Anna;class WalkingRobot extends Robot void show()System.out.pr
15、intln(机器人的名称-+name);class DemoProtected public static void main(String args)WalkingRobot r=new WalkingRobot();System.out.println(机器人的名称-+r.show();protected成员能够被本类访问 protected成员能够被子类访问 (同一包或不同包)protected成员能够被 同一个包的类访问 第20页/共46页默认修饰符 package com.test;public class Robot String name=Anna;String color=Pi
16、nk;public Robot(String name,String color)this.name=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;
17、WalkingRobot(String name,String color,int legnumber)super(name,color);this.legnumber=legnumber;void show()System.out.println(从子类 WalkingRobot 中输出的信息);System.out.println(机器人的名称-+name);不正确:默认成员不能被 不同包中的类访问 第21页/共46页public修饰符 package com.test;public class AccessDemo public void mechod1()System.out.prin
18、tln(一个公有的方法!任何类都可以访问。);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();
19、d.method3();正确:公有方法任何类可访问不正确:保护方法只能在子类中被访问不正确:私有方法 只有本类能访问 第22页/共46页访问修饰符 位置位置privateprivate 默认默认protectedprotectedpublicpublic同一个类同一个类是是是是是是是是同一个包内的类同一个包内的类否否是是是是是是不同包内的子类不同包内的子类否否否否是是是是不同包且不是子类不同包且不是子类否否否否否否是是第23页/共46页演示 在Java中使用访问修饰符访问修饰符演示第24页/共46页静态变量 vstatic修饰符修饰的变量叫静态变量v静态变量独立于类的实例,使用类去访问,而不是
20、类实例,所以也叫类变量v静态变量的声明格式:static type classVar;v类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量v类变量可通过类名直接访问第25页/共46页静态变量 class Robot static long count=0;String name=Anna;String color=Pink;public Robot()count+;public Robot(String name,String color)this.name=name;this.color=color;count+;public class DemoStatic public s
21、tatic void main(String args)Robot r1=new Robot(第1个机器人,color1);Robot r2=new Robot(第2个机器人,color2);System.out.println(当前机器人的个数为:+Robot.count);创建两个对象 count值为2 静态成员变量第26页/共46页静态方法 vstatic修饰符修饰的方法叫静态方法v静态方法独立于类的实例,使用类去访问,而不是类实例,所以也叫类方法v静态方法的声明格式:static returnType classMethod(paramlist)v静态方法使用规则:可以调用其他静态方法
22、;必须访问静态数据;不能使用super或this关键字第27页/共46页静态方法 class Robot static long count=0;String name=Anna;String color=Pink;public Robot()count+;public Robot(String name,String color)this.name=name;this.color=color;count+;public static void displayCount()System.out.println(当前机器人的个数为:+count);静态方法 用于输出静态变量 public cla
23、ss DemoStatic public static void main(String args)Robot r1=new Robot(第1个机器人,color1);Robot r2=new Robot(第2个机器人,color2);Robot.displayCount();创建两个对象调用静态方法输出count值为2 第28页/共46页演示 在Java中使用static修饰符static修饰符演示第29页/共46页final修饰符 v限定符final用于类、方法和变量,指出它们将不能被修改。v对于类、方法和变量,final的含义分别为:final类不能被继承;final方法不能被子类覆盖;
24、final变量的值不能被修改 final修饰变量,则成为常量例如:final int variableName=12;第30页/共46页final修饰符 class Robot protected String name=Anna;protected String color=Pink;Robot(String name,String color)this.name=name;this.color=color;final void show()System.out.println(从父类 Robot 中输出的信息);System.out.println(名称-+name);System.out
25、.println(颜色-+color);System.out.println(=);final修饰的方法 不能在子类中被重写 第31页/共46页演示 在Java中使用final修饰符final修饰符演示第32页/共46页abstract修饰符 v由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类v抽象方法必须声明在抽象类中v抽象方法语法:abstract type method_name(parameter_list);v声明抽象类语法:abstract class v父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方法的实现细节第33页/共46页a
26、bstract修饰符 v抽象类不能被实例化v构造方法和静态方法不能是抽象的v父类的抽象方法往往在子类中实现abstract class Robot protected String name=Anna;protected String color=Pink;Robot(String name,String color)this.name=name;this.color=color;abstract void show();抽象类 抽象方法 class WalkingRobot extends Robot WalkingRobot(String name,String color)super(n
27、ame,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.dri
28、venumber=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.
29、show();r=rr;r.show();第34页/共46页演示 在Java中使用abstract修饰符abstract修饰符演示第35页/共46页接口 v接口就是某个事物对外提供的一些功能的声明 v可以利用接口实现多态,同时接口也弥补了Java单一继承的弱点v使用interface关键字定义接口v一般使用接口声明方法或常量,接口中的方法只能是声明,不能是具体的实现第36页/共46页接口的创建方法 /定义方法的接口public interface myinterface public void add(int x,int y);public void volume(int x,int y,in
30、t z);/定义程序使用的常量的接口public interface myconstants public static final double price=1450.00;public static final int counter=5;接口中的方法必须为public修饰的接口中只能定义 public类型的静态常量 第37页/共46页接口的实现 class UserInterface implements MyInterface public void add(int x,int y)System.out.println(x+y=+(x+y);public void volume(int
31、 x,int y,int z)System.out.println(x*y*z=+x*y*z);void display(int x,int y,int z)add(x,y);volume(x,y,z);实现接口MyInterface 实现接口中的方法 第38页/共46页演示 在Java中使用接口接口演示第39页/共46页多继承 发动机电驱动发动机光驱动发动机光电驱动发动机第40页/共46页多继承 /*查询发动机的马力,发动机将返回一个表示马力的整数*/public interface Motor public int getHorsepower();/*查询电驱动发动机的充电时间,发动机将返
32、回一个表示充电时间的整数。*/public interface BatteryPoweredMotor extends Motor public int getTimeToRecharge();/*查询光驱动发动机能够正常运转所需要的最小流明数,发动机返回一个整数。*/public interface SolarPoweredMotor extends Motor abstract public int getLumensToOperate();/光电驱动的发动机可以描述为public class DualPoweredMotor implements SolarPoweredMotor,Ba
33、tteryPoweredMotor 第41页/共46页演示 多继承多继承演示第42页/共46页总结类和对象的高级特征封装、继承和多态是面向对象的主要特征继承可提高代码的重用性,使用extends关键字来实现继承其他类的类叫子类被继承的类叫做超类(父类)子类构造方法super调用父类构造方法多态性是不同的实例对象以不同的方式对相同的信息作出不同的表现方法重载方法重写运行时多态和编译时多态访问修饰符的分类控制对类、方法和变量的访问的限定符限定符static,创建类方法和类变量限定符final,用于固定类、方法和变量的实现限定符abstract,用于创建抽象类和方法privateprotectedpublic默认修饰符接口就是某个事物对外提供的一些功能的声明弥补Java单一继承的不足,实现多继承第43页/共46页习题第44页/共46页作业第45页/共46页感谢您的观看!第46页/共46页