欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    面向对象编程接口和抽象类.ppt

    • 资源ID:6613948       资源大小:735.50KB        全文页数:44页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    面向对象编程接口和抽象类.ppt

    第四章 面向对象编程,本章主要内容,4.1 简介 4.2 面向对象的基本概念 4.3 面向对象的基本语法 4.4 类和包 4.5 对象4.6 继承和多态4.7 接口和抽象类4.8 面向对象开发概念 4.9 总结,课程回顾,在继承中,一般常见的有那些技术方法的覆盖和重载的区别,在继承中,一般常见的有:属性继承,属性隐藏,方法继承,方法覆盖,方法重载等技术,方法覆盖返回值,参数,函数名完全一致函数覆盖的时候,只有子类的函数可以被引用一般用在希望完全摒弃父类函数,重写函数代码的情况方法重载 只有参数不一致的情况下,子类的函数重载父类的函数 子类和父类的函数是不同的函数,可以被同时引用 一般用在扩充父类函数功能,同时保留古老的父类函数,4.7 接口和抽象类,控制复杂性是计算机编程的本质.Brian Kernigan(Unix操作系统的先驱),4.7.1 抽象类,java语言中,用abstract 关键字来修饰一个类时,这个类叫做抽象类用abstract 关键字来修饰一个方法时,这个方法叫做抽象方法格式如下:抽象类抽象方法,public abstract class abstractClass,abstract returnType abstractMethod(paramlist);,4.7.1 抽象类,抽象类声明时采用的语法:例子:人类是个很典型的抽象类 参看课本例4.18错误的声明方法:参看课本例4.19,public abstract class Person private String name;public abstract String getDescription();public String getName()return name;,Person person=new Person();,抽象类,抽象方法,抽象类是不能实例化对象的,修饰符 abstract class 类名,4.7.2 抽象方法,抽象方法也是由abstract修饰,它属于一种不完整的方法,只含有一个声明,没有方法主体。语法:抽象方法作为抽象类重要的组成部分,它通常描述这各个子类都拥有但又彼此互不相同的方法。,访问修饰符 abstract 返回值类型 方法名();,4.7.1 抽象类,抽象类不能被实例化若类中包含了抽象方法,则该类必须被定义为抽象类,public abstract class Person private String name;public abstract String getDescription();public String getName()return name;public Person(String n)name=n;,public class Employee extends Person private double salary;public Employee(String n,double s)/传递信息到父类构造函数super(n);salary=s;public double getSalary()return salary;public String getDescription()return 员工的工资是:+salary;,抽象类必须被继承,抽象方法必须被重写,抽象方法只需声明,无需实现,抽象类不一定要包含抽象方法,4.7.2 抽象方法,例:完整的抽象类实例:参看课本例4.20,4.7.3 接口,接口(Interface)是对符合接口需求的类的一套规范接口主要作用是可以帮助实现类似于类的多重继承的功能。Java中声明接口的语法如下:,4.7.3 接口,一个Java接口是一些方法特征的集合,但没有方法的实现接口是由常量和抽象方法组成的特殊类 参看例4.21,public interface Shape public abstract double area();public abstract double volume();public abstract String getName();,这是Java接口,4.7.3 接口,public class Point extends Object implements Shape/返回面积public double area()return 0.0;/返回体积public double volume()return 0.0;/返回类名称public String getName()return Point;,Java接口中定义的方法在不同的地方被实现可以具有完全不同的行为 参看课本例4.22,4.7.3 接口,接口的定义接口的定义包括接口声明和接口体接口体包括常量定义和方法定义接口的实现在类的声明中用implements子句来表示一个类使用某个接口在类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法一个类可以实现多个接口,在implements子句中用逗号分开接口类型的使用接口作为一种引用类型来使用任何实现该接口的类的实例都可以存储在该接口类型的变量中,通过这些变量可以访问类所实现的接口中的方法,接口特性,接口可以多重实现接口可以继承其它的接口,并添加新的属性和抽象方法通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。通过接口可以指明多个类需要实现的方法。通过接口可以了解对象的交互界面,而不需了解对象所对应的类与继承关系类似,接口与实现类之间存在多态性,生活中的接口,电脑主板上的PCI插槽的规范就类似于Java接口,声卡,显卡,网卡,每种卡的内部结构都不相同,可以把声卡、网卡、显卡都插在PCI插槽上,而不用担心哪个插槽是专门插哪个卡的,主板,什么是Java接口 2-1,一个Java接口是一些方法特征的集合,但没有方法的实现,public interface PCI public void start();public void stop();,class SoundCard implements PCI public void start()System.out.println(Du du.);public void stop()System.out.println(Sound stop!);,Java接口中定义的方法在不同的地方被实现,可以具有完全不同的行为,这是Java接口,相当于主板上的PCI插槽的规范,class NetworkCard implements PCI public void start()System.out.println(Send.);public void stop()System.out.println(Network stop!);,声卡、网卡都实现了PCI插槽的规范,但行为完全不同,什么是Java接口 2-2,public class Assembler public static void main(String args)PCI nc=new NetworkCard();PCI sc=new SoundCard();nc.start();sc.start();,可以使用Java接口标识类型运行时,根据实际创建的对象类型调用相应的方法实现,Du du.Send.,控制台输出,2,1,为什么需要Java接口 5-1,为班级开发这样一个小系统,包含类型:学生、老师、打印机,具体要求如下:学生、以及老师都具有方法:输出详细信息老师具有属性:打印机,能够通过老师的打印机打印学生或老师的详细信息系统要具备良好的可扩展性与可维护性,打印,学生,老师,老师详细信息,学生详细信息,detail方法(输出详细信息),为什么需要Java接口 5-2,以下这个解决方案中存在着什么问题?,public class Student1/输出学生的详细信息public String detail()return“本人是学生;,public class Teacher1 private Printer printer=new Printer();/输出老师的详细信息public String detail()return“这里是老师;/使用打印机打印学生信息public void print(Student s)printer.print(s.detail();/使用打印机打印老师信息public void print(Teacher t)printer.print(t.detail();,public class Printer public void print(String content)System.out.println(开始打印:);System.out.println(content);,每增加一种新类型,都需要增加相应的print(类型名称 var)方法程序的可扩展性及可维护性极差这不符合系统的要求,为什么需要Java接口 5-3,可以通过多态性解决这个问题吗?,显然,本系统符合使用多态性的条件,教员,中心,detail方法(负责输出详细信息),学生详细信息,老师详细信息,1,2,2,1,回顾多态的含义:实现同一个接口,使用不同的实例而执行不同操作,为什么需要Java接口 5-4,在这个系统中,存在继承关系吗?学生、老师属于两种不同的类型,无法通过“is-a”找到一个合适的父类学生、老师都存在一个共同的方法特征:detail,它们对detail方法有各自不同的实现这完全符合Java接口的定义,定义一个Java接口,在其中定义detail方法,但没有具体实现,实现这个Java接口,不同的类对detail方法有不同的具体实现,为什么需要Java接口 5-5,public interface Introduceable public abstract String detail();,public class Teacher implements Introduceable private Printer printer=new Printer();/输出中心的详细信息public String detail()return“这里是老师;/使用中心打印机打印信息public void print(Introduceable intro)printer.print(intro.detail();,public class Student implements Introduceable/输出教员的详细信息public String detail()return“本人是学生;,通过Java接口,我们同样可以享受到多态性的好处,大大提高了程序的可扩展性及可维护性,使用print方法时,参数可以是任何Introduceable接口的实现类的对象,不必再为不同的类型建立不同的print方法了,使用了Java接口之后,这个系统有了怎样的改进?,什么是面向接口编程,开发系统时,主体构架使用接口,接口构成系统的骨架这样就可以通过更换接口的实现类来更换系统的实现,public class Teacher implements Introduceable private Printer printer=new Printer();public String detail()return“这里是老师;Introduceable intro=new Techer();/使用中心打印机打印信息public void print(Introduceable intro)printer.print(intro.detail();,Introduceable,Student(学生),Teacher(老师),面向接口编程的示例 4-1,升级上述的系统,要求:打印机有多种类型,比如:黑白打印机、彩色打印机等老师可能配备其中任意一款打印机,负责打印学生、或者老师的详细信息系统要具备良好的可扩展性与可维护性,print方法(打印),彩色打印机,黑白打印机,黑白内容,学生/老师 详细信息,彩色内容,面向接口编程的示例 4-2,采用面向接口编程的方式实现,以下是三个步骤中的第一步:,抽象出Java接口1、分析:黑白、彩色打印机都存在一个共同的方法特征:print黑白、彩色打印机对print方法有各自不同的实现2、结论:抽象出Java接口PrinterFace,在其中定义方法print3、具体实现:,public interface PrinterFace public void print(String content);,面向接口编程的示例 4-3,采用面向接口编程的方式实现,以下是三个步骤中的第二步:,public class ColorPrinter implements PrinterFace public void print(String content)System.out.println(彩色打印:);System.out.println(content);,public class BlackPrinter implements PrinterFace public void print(String content)System.out.println(黑白打印:);System.out.println(content);,实现Java接口1、分析:已经抽象出Java接口PrinterFace,并在其中定义了print方法黑白、彩色打印机对print方法有各自不同的实现2、结论:黑白、彩色打印机都实现PrinterFace接口,各自实现print方法3、具体实现:,面向接口编程的示例 4-4,采用面向接口编程的方式实现,以下是三个步骤中的第三步:,使用Java接口1、分析:主体构架使用接口,让接口构成系统的骨架2、结论:更换实现接口的类就可以更换系统的实现,public class Teacher implements Introduceable private PrinterFace printer;/打印机 public void setPrinter(PrinterFace p)this.printer=p;public String detail()return“这里是老师;public void print(Introduceable intro)printer.print(intro.detail();,public class Test public static void main(String args)/创建中心实例 Teacher teacher=new Teacher();/为该老师配备黑白打印机 school.setPrinter(new BlackPrinter();school.print(school);/为该老师配备彩色打印机 school.setPrinter(new ColorPrinter();school.print(school);,为什么需要常量,生活中,一周有七天,如何用代码表示?,public class Week private int days=7;public static void main(String args)Week w=new Week();System.out.println(一周有+w.days+天);,public class Week private int days=7;public static void main(String args)Week w=new Week();w.days+;System.out.println(一周有+w.days+天);,一周有7天,控制台输出,然而,总有不尽人意的事情发生:,一周有8天,控制台输出,如何保证变量的值在运行期无法被改变?使用常量,什么是常量,常量是一种标识符,它的值在运行期间恒定不变常量标识符在程序中只能被引用,而不能被重新赋值,常量的优点,如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?,public static double toRadians(double ang)return ang/180.0*;public static double toDegrees(double ang)return ang*180.0/;,public static final double PIpublic static double toRadians(double ang)return ang/180.0*PI;public static double toDegrees(double ang)return ang*180.0/PI;,程序的可读性变差:用户很难理解数字或字符串的意思,程序的可维护性变差:如果数值改变,则需要在很多地方改动,既麻烦又易出错,使用常量可以增强程序的可读性、可维护性,Java中常量的定义规则,加入final 关键字代表常量,加入static 关键字代表类变量尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串,public class Student public static final int FEMALE=1;/代表女性public static final int MALE=2;/代表男性private int sex;/性别public void setSex(int sex)if(sex=FEMALE)System.out.println(这是一名女学生);else if(sex=MALE)System.out.println(这是一名男学生);this.sex=sex;,在Java接口中声明常量,在Java 接口中声明的变量在编译时会自动加上static final的修饰符,即声明为常量,因而Java接口通常是存放常量的最佳地点,public interface School public static final String STU=“我是学生;public static final String TECH=“我是老师;,public interface School String STU=“我是学生;String TECH=“我是老师;,等同于,OO思想总结,4.7.4 接口与抽象类比较,接口和抽象类的联系与区别,4.7.5 final关键字,final是最终修饰符,可以修饰类、属性和方法。它几乎和abstract是完全相反的概念:final类不能被继承,没有子类,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法,4.7.5 final关键字,最终类 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。例子:String的类声明:定义一个类继承最终类String:参看课本例4.23,4.7.5 final关键字,最终属性final字段,只能存储一个数据,而且不得改变。例:最终变量的使用:参看课本例4.24,4.7.5 final关键字,最终方法为方法“上锁”,防止任何继承类改变它的本来含义。调用final方法时候会转入内嵌机制,大大提高执行效率。参看课本例4.25,4.7.5 final关键字,最终参数 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。例:试图改变最终参数参看课本例4.26,总结,public interface Introduceable public String detail();public void introduction()detail();private void showMessage();void speak();,Java接口中的方法必须是public,Java接口中不能有方法体实现,编译器会自动加上public修饰符,请指出下列Java代码中的错误。,4.8 面向对象开发概念,把良好的编程风格教给那些之前 曾经接触过BASIC的学生 几乎是不可能的.作为可能的程序员,他们已精神残废,无重塑的可能了.E.W.Dijkstra(图灵奖获得者),什么是面向对象的设计思想?“对象(Object)”一词,早在十九世纪就有现象学大师胡塞尔提出并定义。对象是世界中的物体在人脑中的映象是人的意识之所以为意识的反映是做为一种概念而存在的先念的东西它还包括了人的意愿。,对一个确立的系统一般可以进行以下几个过程:一、首先应用面向对象的思想进行系统分析。二、其次时应用面向对象的思想进行系统设计。三、实现(编码)。,4.9 总结,Java的面向对象思想和开发技术Java语言本身的所有基本性能,

    注意事项

    本文(面向对象编程接口和抽象类.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开