JAVA抽象类、接口与包ppt课件.ppt

上传人:牧羊曲112 文档编号:1995295 上传时间:2022-12-30 格式:PPT 页数:42 大小:173.50KB
返回 下载 相关 举报
JAVA抽象类、接口与包ppt课件.ppt_第1页
第1页 / 共42页
JAVA抽象类、接口与包ppt课件.ppt_第2页
第2页 / 共42页
JAVA抽象类、接口与包ppt课件.ppt_第3页
第3页 / 共42页
JAVA抽象类、接口与包ppt课件.ppt_第4页
第4页 / 共42页
JAVA抽象类、接口与包ppt课件.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《JAVA抽象类、接口与包ppt课件.ppt》由会员分享,可在线阅读,更多相关《JAVA抽象类、接口与包ppt课件.ppt(42页珍藏版)》请在三一办公上搜索。

1、1,第5章 抽象类、接口与包,2,学习目标,理解抽象类和接口。掌握创建和导入包的方法。,3,抽象,抽象的作用是从一类相似实体中抽取共性的东西,比如任何电器都有一个播放功能,只是具体播放的内容不同而已。,4,5.1 抽象类,抽象类体现数据抽象的思想,是实现多态的一种手段,其目的是提供可由所有子类共享的一种形式,子类可根据自身需要扩展抽象类。 用abstract 修饰的类被称为抽象类。,5,概念,抽象类:没有具体实例对象的类。抽象类通常包括一个或多个抽象方法(只有方法说明,没有方法体),抽象类的子类必须完成父类定义的每一个抽象方法,除非该子类也是抽象类。它的主要用途是用来描述概念性的内容和方案,没

2、有具体的实现,这样可以提高开发效率,更好地统一用户“接口”。,6,定义, abstract class 类名 成员变量定义; abstract 返回类型 方法名(参数列表); 返回类型 方法名(参数列表)/非抽象方法,7,特点,8,说明,可包含抽象方法和非抽象方法。但包含抽象方法的类必须为抽象类子类(抽象类除外)继承抽象类时,必须实现所有的抽象方法。abstract不能修饰变量和构造函数、不能与static、private、final并列修饰同一个方法。抽象类不能被实例化。抽象类可以具有指向子类对象的对象引用,9,示例,抽象方法不具有任何实现代码,abstract class Shapepro

3、tected double len; /边长长度abstract double area();,class Square extends Shape Square (double num1) super(num1); double area () System.out.print(正方形面积为:); return len* len; ,10,抽象类的使用,由于抽象类只是预先确定了总体结构,缺少实际内容或实现过程,又不能被实例化,因此要发挥它的作用,必须被子类继承后,才具有实际意义。继承抽象类的子类(除抽象类外),必须将所有抽象方法重写和实现。,11,抽象类的作用,子类继承该抽象类。当一个非抽象

4、类继承该抽象类,必须实现该抽象类中的全部抽象方法。(非抽象类不应该包含抽象方法),12,13,注意,抽象方法必须在抽象类中进行定义不能用关键字abstract来修饰构造方法关键字static 和private不能与abstract组合使用关键字final不能与abstract组合使用,14,Continue,抽象类可以继承抽象类,这样就不用再实现父类的方法。 abstract class Aabstract void method1(); abstract class B extends Aabstract void method2();,15,5.2 接口,接口:可以帮助实现类间多重继承结构

5、。接口是 抽象方法和静态常量的集合,因此所有的方法都需要在子类中实现。用途: 通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系。 通过接口了解对象的交互界面,而无需了解对象所对应的类。 可以利用接口实现多态,同时接口也弥补了Java单一继承的弱点,16,举例,17,定义,访问权限 interface 接口名 extends 父接口1,父接口2,/常量声明 publicstaticfinal类型 常量名=常量值; /抽象方法声明 publicabstract 类型 方法名(参数);,18,说明,接口中的成员变量默认为public static final型的,而且值固定。接口中的所有方

6、法默认为public abstract方法。类(抽象类除外)实现接口,必须实现所有抽象方法。无构造函数,不能被实例化,可以实现多重继承。,19,示例:创建接口,/ 定义方法的接口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 co

7、unter = 5;,20,接口的使用,用关键字implements实现接口,例如:class demo implements myinterface如果有一个以上接口被实现,则用逗号隔开接口名称,如下所示: class demo implements Mycalc, Mycount实现接口的类(除抽象类外)必须实现其所有的抽象方法。类在实现时,必须显式地使用public修饰符。,21,interface MyInterfacepublic void add(int x , int y);public void volume(int x , int y , int z);,接口使用示例,ubl

8、ic class InterfaceDemo implements MyInterfacepublic void add(int x , int y) System.out.println(和:+(x+y);public void volume(int x , int y , int z) System.out.println(积:+(x*y*z); public static void main(String args) MyInterface d=new InterfaceDemo(); d.add (10,10); d.volume(10,10,10);,22,实现,关键字:implem

9、ents接口有几个方法一定要实现并且一定要加public,public class Test implements Bpublic void add()public float sum(float x, float y) return x-y;public double sub(double x,double y)return x-y;,23,例如,interface A int a=4;/必须是赋值,常量public abstract void method1(); class B implements APublic void method1() System.out.println(2)

10、; ,24,Continue,由于接口中都是抽象方法,所以接口中默认的方法都是abstract并且public,用户在定义抽象方法时,可以省略abstract,public由于接口中的成员量都是常量,所以必须给赋值,final可以省略。,25,实现多个接口,interface Printableinterface Addableclass A implements Printable, Addable,26,接口与接口之间也可以继承,不用去实现方法Interface AInterface B extends A,27,与类的区别,一个类只能继承一个父类,而一个接口则可以有多个父接口。类继承了父

11、类的方法,可以选择是否覆盖父类的方法;而接口中的方法没有具体实现,因此,实现接口的类必须实现所有的抽象方法。接口允许没有父接口,即接口不存在最高层,而类的最高层是object类。,28,与抽象类的区别,接口中的所有方法都是抽象方法,而抽象类中可以含有非抽象方法。抽象类可以实现接口,但接口不可以继承类。在设计级别上,若子类有共同的逻辑,则考虑用抽象类,如几个类之间含有相同的某项功能,则考虑用接口。,29,引用类型转换,引用类型之间转换的前提:父子关系 例如: Employee是父类,Manager是子类 Employee emp=new Manager();语法成立因为Manager也是一个Em

12、ployee但是Manager m=new Employee()是错误的,Employee肯定是Manager?,30,class A/Employeeint a=2;public void method1()System.out.println(1);public void method2()System.out.println(2);class B extends A/Managerint a=3;public void method1()System.out.println(3);public void method3()System.out.println(4);public stat

13、ic void main(String args)A a1;a1=new B();a1.method1();a1.method2(); System.out.println(a1.a);/这个值为多少呢?/a1.method3();,31,多态,重载方法重写上转型对象接口回调,32,上转型对象,用于继承父类声明的变量,把子类的对象赋予给该变量,我们称作为上转型对象。该对象操作的方法,是重写的方法。属性仍旧是父类的属性。该对象失去了子类自己增加的属性和方法。,33,34,接口回调,使用某一个接口的类 创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法。当接

14、口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。接口回调可以实现多态!,35,例子,36,5.3 包,包允许将类组合成较小的单元(类似文件),使其易于找到和使用相应的类文件。包允许在更广的范围内保护类、数据和方法,可以在包内定义类,而在包外的代码不能访问该类。,“包将类名空间划分为更加容易管理的块, 包既是命名机制也是可见度控制机制 ”,37,包,包是一组相关的类和接口的集合。将类和接口分装在不同的包中,可以避免重名类的冲突,有效地安全管理命名空间。 默认情况下,java.lang包下的类,系统会自动导入。,38,包,无名包:在缺省情况下,

15、系统(针对每一java文件)自动创建。文件中的所有类都隶属这个包类之间可以相互引用非private的属性和方法不能被其他包的类所引用有名包格式:pakage 包名;说明:必须置于import语句前,而且是第一行。一个java文件只能有一个包,39,创建包,/filename:ABC.java package test;public class ABCint base=10;public void show()System.out.println(base);,40,使用包名.类名前缀如: MyPackage.Circle 加载需要使用的类 在程序的开始部分利用import语句加载所需的类。 如

16、:import MyPackage.Circle ;加载其他类(包括系统类) 利用import语句可以加载整个包中的类。如:import MyPackage.*;,包的引用,41,导入包,/filename:PackageTest.javaimport test.ABC;public class PackageTestpublic static void main(String args) ABC obj=new ABC();obj.show();,编译:javac -d . ABC.java PackageTest.java运行:java PackageTest,42,总结,抽象类体现数据抽象的思想,是实现多态的一种手段,其目的是提供可由所有子类共享的一种形式,子类可根据自身需要扩展抽象类接口是Java编程一项重要的技术,同过它可以实现多态,同时它也弥补了Java单一继承的不足包提供了一个很好的封装机制,可以有效地避免命名空间的冲突。创建包使用关键字package,导入包使用关键字import。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号