接口和多态性PPT讲稿.ppt
《接口和多态性PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《接口和多态性PPT讲稿.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、接口和多态性第1页,共44页,编辑于2022年,星期日5.1 多态性多态性概念:在程序中同一符号或名字在不同情况下具有不同的语义解释,其有两种基本形式:编译时多态性:在程序编译时可确定的多态性,由重载机制实现运行时多态性:指程序动态运行时才可确定的多态性,由继承继承结合动态绑定动态绑定实现.第2页,共44页,编辑于2022年,星期日5.1 多态性绑定绑定 将一个名字与它的特性相关联的过程.静态绑定就是绑定过程在编译时进行,动态绑定就是绑定过程在运行时进行.动态绑定动态绑定 先设计一个类层次,子类重定义超类的某些方法,然后使用超类类型的对象引用调用这些方法超类类型的对象引用调用这些方法,JVM根
2、据这些对象引用的动态类型选择所调用方法的版本,即如果该对象引用的是超类的对象实例,则调用超类定义的方法,如果引用的是子类的对象实例,则调用子类定义的方法.第3页,共44页,编辑于2022年,星期日public class SuperClass public void firstMethod()secondMethod();public void secondMethod()System.out.println(“SuperClass.secondMethod()”);public class SubClass extends SuperClass public void secondMetho
3、d()System.out.println(“SubClass.secondMethod()”);则下述语句运行结果:SubClass subObj=new SubClass();SuperClass superRef=subObj;superRef.firstMethod();输出结果:SubClass.secondMethod()第4页,共44页,编辑于2022年,星期日5.2 抽象类概念概念:只能被继承和扩充而不能创建自己的对象实例的类叫做抽象类。通常用做超类.通过关键字通过关键字abstract abstract 进行标记将类声明为抽象进行标记将类声明为抽象public abstrac
4、t class Drawing public abstract void drawDot(int x,int y);public void drawLine(int x1,int y1,int x2,int y2)/draw using the drawDot()method/repeatedly.一个一个abstract abstract 类可以包含非抽象方法和变量类可以包含非抽象方法和变量抽象类只有被派生才能创建对象实例抽象类只有被派生才能创建对象实例.抽象方法只有被重定义才能给出其方法体抽象方法只有被重定义才能给出其方法体.第5页,共44页,编辑于2022年,星期日例例:某公司要编写雇员
5、工资支付程序某公司要编写雇员工资支付程序,不同的雇员按不同的方式支付工不同的雇员按不同的方式支付工资资:经理经理(Manager)每月获得固定工资每月获得固定工资;销售员销售员(Salesman)每月基本工资每月基本工资+销售提成销售提成;一般工人一般工人(Worker)按每月工作的天数计算工资按每月工作的天数计算工资第6页,共44页,编辑于2022年,星期日Employee-namegetName()computeSalary()Manager-namemonthSalarygetName()computeSalary()Salesman-namebaseSalaryCommisionqua
6、ntitygetName()computeSalary()Worker-namedailySalarydaysgetName()computeSalary()第7页,共44页,编辑于2022年,星期日/Employee.javapublic abstract class Employee private String name;public Employee(String name)this.name=name;public String getName()return name;/计算雇员月工资的抽象方法 public abstract double computeSalary();第8页,
7、共44页,编辑于2022年,星期日class Manager extends Employee private double monthSalary;public Manager(String name,double monthSalary)super(name);/调用超类构造函数 this.monthSalary=monthSalary;/重定义超类的抽象方法computeSalary public double computeSalary()return monthSalary;第9页,共44页,编辑于2022年,星期日 class Salesman extends Employee p
8、rivate double baseSalary;/基本工资 private double commision;/每件产品提成额 private int quantity;/销售的产品数量 public Salesman(String name,double baseSalary,double commision,int quantity)super(name);this.baseSalary=baseSalary;mision=commision;this.quantity=quantity;public double computeSalary()return baseSalary+com
9、mision*quantity;第10页,共44页,编辑于2022年,星期日class Worker extends Employee private double dailySalary;/每天工资额 private int days;/每月工作的天数 public Worker(String name,double dailySalary,int days)super(name);this.dailySalary=dailySalary;this.days=days;public double computeSalary()return dailySalary*days;第11页,共44页
10、,编辑于2022年,星期日class Demo public static void main(String args)/超类数组,记录各种类型雇员 Employee data=new Employee4;data0=new Manager(Manager,10000);data1=new Salesman(Salesman,3000,200,12);data2=new Worker(Worker Zhang,200,25);data3=new Worker(Worker Li,250,26);displaySalary(data);public static void displaySala
11、ry(Employee data)for(int i=0;i程序包程序包(package)=编写大型编写大型java程序程序 弥补了类的单继承不能满足功能扩充的不足弥补了类的单继承不能满足功能扩充的不足第14页,共44页,编辑于2022年,星期日5.3 接口接口的概念类的接口类的接口 供他类可访问的数据成员和方法成员类的实现接口类的实现接口 使用者与实现者之间的约束抽象-相当于纯抽象类 接口必须通过类来实现 接口提供一个观察类的角度一个类可以实现多个接口-多角度观察同一个事物一个接口类可以为多个类实现-同一个角度观察不同事物Java API标准接口 Serializable(可序列化的),Cl
12、oneable(可克隆的)MouseListener(鼠标监听者)LayoutManager(布局管理者)第15页,共44页,编辑于2022年,星期日5.3 接口接口的声明/Controllable.java public interface Controllable int OFF=0;/静态变量,要初始化 int ON=1;void setPower(int on_or_off);boolean isPowerOn();接口数据成员接口数据成员只能是公有的静态只能是公有的静态常量数据常量数据,可用可用public,static,final来来修饰修饰接口成员方法只能是接口成员方法只能是公有
13、抽象方法公有抽象方法,只能只能用用public,abstract来来修饰修饰第16页,共44页,编辑于2022年,星期日Pet示例假设有一个超类FourLegged,Cat/Duck/Dog都继承它 又同时要扩展Pet用C+,可以多重继承用JAVA接口实现示例第17页,共44页,编辑于2022年,星期日interface Pet abstract public void speak();class Dog implements Petpublic void speak()System.out.println(Woof);第18页,共44页,编辑于2022年,星期日class Cat imple
14、ments Petpublic void speak()System.out.println(Meow);class Duck implements Petpublic void speak()System.out.println(Quack);第19页,共44页,编辑于2022年,星期日public class Animalspublic static void main(String agrs)Pet myPets=new Pet4;myPets0=new Duck();myPets1=new Cat();myPets2=new Duck();myPets3=new Dog();for(i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 接口 多态性 PPT 讲稿
限制150内