




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7讲 Java的接口、抽象类与包,回顾,Java类和对象的概念 类的结构以及如何生成对象 类的3大特性:封装,继承,多态 打包的使用以及访问控制符,类和对象的高级特性,抽象类和抽象方法 接口的使用 内部类的使用,抽象类和抽象方法,关键字是abstract 抽象类 定义抽象类的目的是提供可由其子类共享的一般形式,子类可以根据自身需要扩展抽象类。 抽象类不能实例化,只能用于继承 抽象方法 没有函数体。 抽象方法必须在子类中给出具体实现。 abstract和final、static、private不能同时使用,abstract 修饰符可与类和方法一起使用,抽象类和抽象方法(续),在以下情况下,某个
2、类将成为抽象类: 当类的一个或多个方法为抽象方法时。 当类是一个抽象类的子类,但没有为所有抽象方法提供实现细节或方法主体时。 当类实现了一个接口,但没有为所有抽象方法提供实现细节或方法主体时。 注意:抽象类可以包含非抽象方法,也可以一个抽象方法都没有,但只要有一个抽象方法就是抽象类(参见程序GraphicDemo),接口,public interface InterfaceExample int i=4; int k=5; void func1(); int func2(int x); ,若抽象类中的所有方法都是抽象的,则该类可用另一种方式定义,即接口,关键字interface 接口是抽象方法
3、和常量定义的集合,接口的访问修饰符只有public和friendly 接口的成员变量隐含为public、static、final,必须赋初值。 接口的成员方法隐含为public、abstract 接口是抽象类的进一步升华,它只提供一个框架,具体代码由实现接口的类完成 接口和抽象类的不同在于,它为无关的类实现同样功能提供了可能,Java设计接口就是为了实现多继承的功能,而抽象类只能由继承链上的类实现,接口的特性,接口的实现,interface Interface1 int k=5; void func1(); public class Class1 implements Interface1 p
4、ublic void func1() System.out.println( func1=+k); ,关键字implements:类继承接口的关键字,接口实现多重继承,一个类可以实现多个接口。 实现接口的类必须给出接口中所有方法的实现代码,最少要有一对大括号,而且必须在实现方法前加public关键字,若只实现部分方法,则该类成为抽象类。 用接口可定义一个引用变量,该引用可指向任何实现该接口的类的对象,即接口引用可指向实现类对象。,接口的实现(续),interface Interface1 int i=4; void func1(); interface Interface2 int k=5;
5、void func2(); class Class2 public void func2() System.out.println(func2 in class2); public class Class1 extends Class2 implements Interface1,Interface2 问题:为什么Class1前 int j;不加abstract? public void func1() System.out.println(func1 in Class1);,接口实现多重继承(续),通过实现多个接口来达到继承多个类的目的 在程序中如果同时继承类和实现接口,则必须把类写在前面,
6、接口写在后面;若实现多个接口,接口之间用逗号分开 接口与接口的继承关键字为:extends 接口之间可以多重继承(见下页),interface Interface1 int i=4; void func1(); interface Interface2 int k=5; void func2(); interface Interface3 extends Interface1,Interface2 int j=6; void func3(); public class Class3 implements Interface3 int m; public void func1() public
7、void func2() public void func3() ,接口引用,接口可作为一种引用类型来使用,不需要了解对象所对应的具体的类,而是着重于它的交互界面。 任何实现该接口的类的实例都可以存储在该接口类型的变量中(类似父类引用指向子类对象),通过这些变量可访问类所实现的接口中的方法。 参见程序InterfaceDemo1,类的多种使用方法,内部类 成员类 局部类 匿名类,内部类,定义在另一个类中的类称为内部类,内部类可分为 成员类:类似于成员变量,定义在外部类所有方法之外, 局部类:类似于局部变量,定义在外部类某个方法之内,成员类,成员类可访问外部类成员,外部类不能直接访问成员类成员,
8、只能通过成员类对象引用访问 参考InnerClassDemo1 成员类可以声明为private或protected 根据成员类前是否有static修饰,在外部类之外创建成员类对象分两种情况,成员类(续),无static修饰:先创建外部类对象,再由外部类对象创建内部类对象 OutClass outer=new OutClass(); OutClass.InClass in=outer.new InClass(); 参考InnerClassDemo 有static修饰:直接创建内部类对象 OuterClass.InClass in=new OuterClass.InClass(); 参考Inner
9、ClassDemo2,包装类,使用8种基本数据类型声明的变量不是对象 JAVA提供包装类,可以将基本数据类型当作对象操作 每种基本数据类型都有对应的包装类 对应关系如下表:,包装类,Java包(package),当编译Java源程序时,对其中的每个类都生成一个.Class文件,为统一组织和管理它们,Java使用了包 包类似于文件夹,一组相关的类被放在一起 建议每个文件只写一个类,然后用包将相关的类进行组合,包的用途,包允许你将类文件组织起来,便于查找和使用合适的类。 包不仅包含类和接口,还能包含其它包,从而形成有层次的包空间。 包有助于避免命名冲突。当你使用很多类时,确保类和方法名称的唯一性是非常困难的。包能够形成层次命名空间,缩小了名称冲突的范围,易于管理名称。,使用包,创建包 package mypackage; 访问 Java 包成员 mypackage.My_Class 导入包 import package_name.*; 导入子包 import package_name.Student.* 示范一个打包,并访问包内的CLASS,包的访问权限,public-公共 所有类都可以访问 pro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据隐私保护与网络设计的结合试题及答案
- 药剂学基础知识试题及答案
- 葡萄糖作用2025年临床执业医师考试试题及答案
- 自主复习2025年初级会计师试题及答案
- 高三政治《国家与国际组织常识》专题练习西方政治体制的模式
- 电气销售面试题及答案
- 瞄准目标卫生管理证书考试试题及答案
- 缙云招聘面试题及答案
- 系统规划与管理师考试准备规划试题及答案
- 系统架构设计中的绿色计算理念试题及答案
- 2023年中考地理会考模拟试卷(含答案)
- 胰腺癌一病一品
- 智能化浓缩机控制系统开发
- 第7课《提高警惕防拐骗》课件
- 展会搭建活动方案
- 刑事案件侦查程序中的监督与纠正措施
- 森林生态系统的结构和功能
- 交通运输的创新技术与应用
- 2024年中国盐业集团有限公司招聘笔试参考题库含答案解析
- 护士如何处理患者的不合理诉求和抱怨
- 临建工程施工技术交底
评论
0/150
提交评论