面向对象编程接口和抽象类.ppt
《面向对象编程接口和抽象类.ppt》由会员分享,可在线阅读,更多相关《面向对象编程接口和抽象类.ppt(44页珍藏版)》请在三一办公上搜索。
1、第四章 面向对象编程,本章主要内容,4.1 简介 4.2 面向对象的基本概念 4.3 面向对象的基本语法 4.4 类和包 4.5 对象4.6 继承和多态4.7 接口和抽象类4.8 面向对象开发概念 4.9 总结,课程回顾,在继承中,一般常见的有那些技术方法的覆盖和重载的区别,在继承中,一般常见的有:属性继承,属性隐藏,方法继承,方法覆盖,方法重载等技术,方法覆盖返回值,参数,函数名完全一致函数覆盖的时候,只有子类的函数可以被引用一般用在希望完全摒弃父类函数,重写函数代码的情况方法重载 只有参数不一致的情况下,子类的函数重载父类的函数 子类和父类的函数是不同的函数,可以被同时引用 一般用在扩充父
2、类函数功能,同时保留古老的父类函数,4.7 接口和抽象类,控制复杂性是计算机编程的本质.Brian Kernigan(Unix操作系统的先驱),4.7.1 抽象类,java语言中,用abstract 关键字来修饰一个类时,这个类叫做抽象类用abstract 关键字来修饰一个方法时,这个方法叫做抽象方法格式如下:抽象类抽象方法,public abstract class abstractClass,abstract returnType abstractMethod(paramlist);,4.7.1 抽象类,抽象类声明时采用的语法:例子:人类是个很典型的抽象类 参看课本例4.18错误的声明方法
3、:参看课本例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修饰,它属于一种不完整的方法,只含有一个声明,没有方法主体。语法:抽象方法作为抽象类重要的组成部分,它通常描述这各个子类都拥有但又彼
4、此互不相同的方法。,访问修饰符 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;publi
5、c 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中声明
6、接口的语法如下:,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;/返回体积p
7、ublic double volume()return 0.0;/返回类名称public String getName()return Point;,Java接口中定义的方法在不同的地方被实现可以具有完全不同的行为 参看课本例4.22,4.7.3 接口,接口的定义接口的定义包括接口声明和接口体接口体包括常量定义和方法定义接口的实现在类的声明中用implements子句来表示一个类使用某个接口在类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法一个类可以实现多个接口,在implements子句中用逗号分开接口类型的使用接口作为一种引用类型来使用任何实现该接口的类的实例都可以存储在该
8、接口类型的变量中,通过这些变量可以访问类所实现的接口中的方法,接口特性,接口可以多重实现接口可以继承其它的接口,并添加新的属性和抽象方法通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。通过接口可以指明多个类需要实现的方法。通过接口可以了解对象的交互界面,而不需了解对象所对应的类与继承关系类似,接口与实现类之间存在多态性,生活中的接口,电脑主板上的PCI插槽的规范就类似于Java接口,声卡,显卡,网卡,每种卡的内部结构都不相同,可以把声卡、网卡、显卡都插在PCI插槽上,而不用担心哪个插槽是专门插哪个卡的,主板,什么是Java接口 2-1,一个Java接口是一些方法特征的集合
9、,但没有方法的实现,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 vo
10、id 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
11、 du.Send.,控制台输出,2,1,为什么需要Java接口 5-1,为班级开发这样一个小系统,包含类型:学生、老师、打印机,具体要求如下:学生、以及老师都具有方法:输出详细信息老师具有属性:打印机,能够通过老师的打印机打印学生或老师的详细信息系统要具备良好的可扩展性与可维护性,打印,学生,老师,老师详细信息,学生详细信息,detail方法(输出详细信息),为什么需要Java接口 5-2,以下这个解决方案中存在着什么问题?,public class Student1/输出学生的详细信息public String detail()return“本人是学生;,public class Teach
12、er1 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(开始打印:);Sy
13、stem.out.println(content);,每增加一种新类型,都需要增加相应的print(类型名称 var)方法程序的可扩展性及可维护性极差这不符合系统的要求,为什么需要Java接口 5-3,可以通过多态性解决这个问题吗?,显然,本系统符合使用多态性的条件,教员,中心,detail方法(负责输出详细信息),学生详细信息,老师详细信息,1,2,2,1,回顾多态的含义:实现同一个接口,使用不同的实例而执行不同操作,为什么需要Java接口 5-4,在这个系统中,存在继承关系吗?学生、老师属于两种不同的类型,无法通过“is-a”找到一个合适的父类学生、老师都存在一个共同的方法特征:detai
14、l,它们对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()re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 编程 接口 抽象
链接地址:https://www.31ppt.com/p-6613948.html