课程所属院(部):软件工程学院 2019--2020学年 第一学期 课程名称 单元标题 授课班级 的实现 Java语言编程基础 项目二任务2 学生成绩类操作接口任课教师 上课地点 第 周 星期 第 节 月 日 第 周 星期 第 节 月 日 学时 第 周 星期 第 节 月 日 知识目标 6 第 周 星期 第 节 月 日 第 周 星期 第 周 星期 第 节 月 日 能力目标 授课时间 第 节 月 日 1.能掌握利用接口编写程序的方法 教学目标 1. 了解接口的概念和意义; 2. 掌握定义接口和实现接口的方法; 3. 掌握定义数据表操作接口的方法; 4.掌握实现数据表接口的方法。 教学任务 通过接口提供的方法来操作数据库中的表 重点:定义接口和实现接口的方法 教学重、难点 难点:实现数据表接口的方法 教学材料或用具 教材、教案、课件、课程标准、案例素材及Eclipse开发软件 课后任务 1.利用抽象类分别求三角形、矩形和圆的面积、周长。 2.巩固例子 山东理工职业学院单元教学过程设计
步骤及时间 5分钟 5分钟 20分钟 教学内容 【组织教学】 1、检查学生出勤,作好学生考勤记录。 2、课堂提问,了解学生掌握所学知识情况。 3、强调课堂纪律,加强互动,活跃课堂气氛。 教师活动 学生活动 组织教学 任务导入 课件演示 案例操作讲解 指出学习重点和难点 配合教师组织教学 聆听互动 聆听 简单记录重要知识点、回答提问,观看并记忆各元素用法 【课题导入】 任务1.1用记事本完成了代码设计,但是还无法看到代码执行后的效果。任务二是在任务一的基础上,利用Java语言的开发工具运行该程序,并得到运行结果。在此过程中,需要了解开发工具的使用方法、文件建立的方法、代码的编写、存储,以及程序的运行过程。 【讲授新课】 8.4.1抽象类和接口 1.抽象类 抽象类是普通类与接口之间的一种中庸之道。Java规定,用关键字abstract修饰的类称为抽象类(abstract类),用关键字abstract修饰的方法称为抽象方法。 例如: abstract class Base{ //抽象类定义 abstract void method1(); //抽象方法定义 void method2(){ //具体方法定义 System.out.println(\"method2\"); } } 声明格式: abstract class 类名{ abstract 数据类型 方法名(参数表); } 【注意】(1)方法声明中没有{}; (2)方法声明最后的“;”不能省略。 【说明】 (1)用abstract修饰的类表示抽象类,抽象类不能被实例化,即不允许创建抽象类本身的实例。没有用abstract修饰的类称为具体类,具体类可以被实例化。 (2)用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。没有用abstract修饰 40分钟 的方法称为具体方法,具体方法具有方法体。 (3)抽象方法必须声明在抽象类中,而且抽象方法只需声明,不需实现。 (4)父类中的某些抽象方法不包含任何逻辑,需要在子类继承中由子类提供抽象方法的实现细节。 (5)含有抽象方法的类必须声明为抽象类(abstract类)。抽象类中不一定包含抽象方法,但包含抽象方法的类一定要声明为抽象类。 (6)抽象类中可以包含构造方法,由于不能利用抽象类直接创建对象,因此抽象类中定义构造方法是多余的。 【例8.1】找出下面程序中的错误,并说明原因。 abstract class Base{ abstract void method1(); abstract void method2(); } class Sub extends Base{ void method1(){ System.out.println(\"method1\"); } } 2.接口 接口(interface)就是方法和常量的集合,为了使Java程序的类层次结构更加合理,更符合实际问题的本质,编译者可以把用于完成特定功能的若干属性组织成相对的属性集合;凡是需要实现这种特定功能的类,都可以继承这个属性集合并在类内使用它,这种属性集合就是接口。 【说明】 接口使抽象的概念更向前迈进了一步,接口产生一个完全的抽象类,它根本就没有提供任何具体实现。允许创建者确定方法名、参数列表和返回类型,但是没有任何方法体。接口只提供形式,不提供任何具体实现。 接口定义格式: [public] interface 接口名{ [public][static][final] 类型 变量名=常量值; [public][abstract]类型 方法名(参数列表); } 说明:接口修饰符为public或省略形式,分别为公共接口,或者是友好接口;而属性和方法均为public权限。 接口体由两部分组成: (1)对接口中属性的声明 接口中只能包含public、static、final类型的成员变量,因此接口中的属性都是用final修饰的常量。 (2) 对接口中方法的声明 接口中只能包含public、abstract类型的成员方法,不能有非抽象方法。在接口中只能给出这些抽象方法的方法名、返回值和参数列表,而不能定义方法体,即仅仅规定了一组信息交换、传输和处理的“接口”。 【例8.2】接口定义举例 public interface A { 50分钟 public static final int X=1; public static final int Y=2; public static final int Z=3; public void show(); } 【例8.3】找出下面程序中的错误,并说明原因。 public interface A{ int var; void method1(){ System.out.println(\"method1\"); } protected void method2(); static void method3(){ System.out.println(\"method3\"); } } 3.接口的实现 接口的实现:接口由类来实现,而且一个类能实现许多接口。 实现的格式如下: class 类名 implements 接口1 [,接口2,接口3,…,接口n]{ ......} 例如:假设A,B,C为已经定义的接口 public class MyInterface implements A,B,C{ ...... } 【说明】类MyInterface实现了三个接口,即实现三者所有方法。 【例8.4】实现SayHello接口 interface SayHello { void printMessage(); } class MySayHello implements SayHello { public void printMessage() { System.out.println(\"Hello\"); } } 【例8.5】找出下面程序中的错误,说明原因,并进行改正。 interface SayHello { void printMessage(); void receiveMessage(); } class MySayHello implements SayHello { public void printMessage() { System.out.println(\"Hello\"); } } 例题解析 指出每个例子应注意的点 互动交流 记录、记忆并提出疑问 【注意】 (1)接口一经声明并实现,即可以使用。 (2)同一个接口可以由多个类来实现,接口中的同一个方法在实现这个接口的不同的类中可以有不同的具体实现(多态性)。 (3)接口是一个规范,是一个抽象的概念,由类把这个规范具体实现。 4.类和接口的区别 (1)类只能继承一个类,而对于接口,类可以实现多个接口。 (2)对于继承性,类继承了超类的方法:子类可以选择是否覆盖超类的方法。接口的方法没有实现,因此,类必须实现接口中的每个方法。 (3)从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。 (4)接口像一个规范,一个协议,而类则是实现了这个协议,满足这个规范的具体实现。 5.接口和抽象类的区别 相同点: (1)都包含抽象方法,声明多个类共享方法首部。 (2)都不能被实例化。 不同点: (1)一个类只能继承一个抽象类,而一个类可以实现多个接口。 (2)访问权限不同,抽象类和普通类一样,而接口的访问权限是默认和public,接口成员都是public。 (3)抽象类和接口中的成员变量不同。 (4)抽象类可包含抽象方法和普通方法,接口只能是抽象方法。 6.接口的作用 (1)使用接口可以使设计与实现相分离,使使用接口的用户程序不受不同接口实现的影响,不受接口实现改变的影响。 (2)弥补Java只支持类单继承的不足,它用来完成多继承的一些功能。Java接口反映了对象较高层次的抽象,为描述相互似乎没有关系的对象的共性提供了一种有效的手段。 7.接口的继承 接口之间可以存在继承关系,但不能是实现关系。 interface A{ void method1(); } interface B{ void method2(); } interface D extends A,B{ } //合法 interface E implements A,B{ } //错误 【例8.6】 //定义接口 interface Animal{ void eat(); void sleep();} interface Man extends Animal{ void think();} interface School{ void classroom();} //定义抽象类Student abstract class Student implements Man,School{ public abstract void study(); } //定义大学生类 class Undergraduate extends Student{ String name; public Undergraduate(String name){ this.name=name; } public void study(){ System.out.println(name+\"can study.\"); } public void classroom(){ System.out.println(name+\"has classroom to study.\"); } public void think(){ System.out.println(name+\"can think.\"); } public void eat(){ System.out.println(name+\"can eat.\"); } public void sleep(){ System.out.println(name+\"can sleep.\"); } void ablity(){ this.sleep(); this.eat(); this.think(); this.study(); this.classroom(); } } //定义测试类 public class Exp86{ public static void main(String args[ ]){ Undergraduate s=new Undergraduate(\"李平\"); s.ablity(); } } 运行结果: 20分钟 50分钟 图8-4 例8.4运行效果图 8.接口的多态 多态:同一个接口可以由多个类来实现,接口中的同一个方法在实现 这个接口的不同的类中可以有不同的具体实现。 【例8.7】 public interface A { public static final int X = 1; public static final int Y = 2; public static final int Z = 3; public void show(); } class B implements A { public void show() { System.out.println(\"class B\"); } } class C implements A { public void show() { System.out.println(\"class C\"); } } 8.4.2 List与ArrayList List包括List接口以及List接口的所有实现类。因为List接口实现 了Collection接口,所以List接口拥有Collection接口提供的所有常用方 法,又因为List是列表类型,所以List接口还提供了一些适合于自身的 常用方法,如表8-1所示。 表8-1 List接口相关方法 方法名称 功能简介 用来向集合的指定索引位置添加对象,其他 add(int index,Object obj) 对象的索引位置相对后移一位,索引位置从 0开始。 addAll(int,Collection 用来向集合的指定索引位置添加指定集合 col) 中的对象。 remove(int index) 用来清除集合中指定索引位置的对象 用来将集合中指定索引位置的对象修改为set(int index,Object obj) 指定对象 get(int index) 用来获得指定索引位置的对象 indexOf(Object obj) 用来获得指定对象的索引位置。当存在多个时,返回一个索引位置;当不存在时,返回-1 用来获得指定对象的索引位置。当存在多个时,返回最后一个的索引位置;当不存在时,返回-1 lastIndexOf(Object obj) 2.实例化接口 List接口提供的适合于自身的常用方法均与索引有关,这是因为List集合为列表类型,以线性方式存储对象,可以通过对象的索引操作对象。 List接口的常用实现类有ArrayList和LinkedList,在使用List集合时,通常情况下声明为List类型,实例化时根据实际情况的需要,实例化为ArrayList或LinkedList。 格式: // 利用ArrayList类实例化List集合 List<数据类型A> 对象名称 = new ArrayList<数据类型A>(); // 利用LinkedList类实例化List集合 List<数据类型B> 对象名称= new LinkedList<数据类型B>(); 3. add(int index, Object obj)方法和set(int index, Object obj)方法的区别 在使用List集合时需要注意区分add(int index, Object obj)方法和set(int index, Object obj)方法,前者是向指定索引位置添加对象,而后者是修改指定索引位置的对象。 【例8.8】遍历List举例1 import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class Exp88{ public static void main(String[] args) { String a = \"A\ List } 三、分组练习 按班级人数分成小组,小组内成员合作完成相应的任务。 四、巡回指导 巡回指导 精确操作步骤,指导学生,及时解决学生在上机过程中遇到的问题。 【任务总结】 1、学生完成的课堂任务总结。 2、本节课知识点提问。 【布置作业】 1.利用抽象类分别求三角形、矩形和圆的面积、周长。 2.巩固例子 } stu.setGym(rs.getFloat(\"gym\")); stulist.add(stu); } } catch (SQLException e) { e.printStackTrace(); } return stulist; 上机实践操作任务、自主探究和小组协作 提出疑问 配合回答提问 提出操作疑问 利用课上剩余时间或课下时间完善任务
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务