06Java面向对象设计接口与抽象类

上传人:m**** 文档编号:584071470 上传时间:2024-08-30 格式:PPT 页数:27 大小:453.50KB
返回 下载 相关 举报
06Java面向对象设计接口与抽象类_第1页
第1页 / 共27页
06Java面向对象设计接口与抽象类_第2页
第2页 / 共27页
06Java面向对象设计接口与抽象类_第3页
第3页 / 共27页
06Java面向对象设计接口与抽象类_第4页
第4页 / 共27页
06Java面向对象设计接口与抽象类_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《06Java面向对象设计接口与抽象类》由会员分享,可在线阅读,更多相关《06Java面向对象设计接口与抽象类(27页珍藏版)》请在金锄头文库上搜索。

1、第7课 Java面向对象设计-接口 学习目标理解抽象类的概念;掌握接口的使用;理解final关键字;本课内容抽象类final接口方法的重载1. 抽象类(abstract class)用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。抽象类不能被实例化。抽象类一般是一个基础的实现框架抽象方法只需声明,而不需实现abstract returnType abstractMethod ( paramlist );练习:根据类图编写代码:练习:根据类图编写代码:Mus

2、ic4.javaMusic4.java2. 关键字finalfinal可用来修饰类、变量和方法final变量基本数据类型,变量的值不可修改引用数据类型,引用的对象不可修改。某个reference一旦初始化用以代表某个对象后,就再也不能改而指向其他对象,但对象的数据可以被修改final成员变量练习: FinalData.java3. 接 口接口(interface)是抽象方法和常量值的集合。接口是一种纯粹的抽象类,只提供对外的界面定义,而不包含任何实现(如变量和方法的实现代码)。接口定义public interface aInterface .实现接口class cName implements

3、 aInterface针对接口编程,而不是针对实现编程练习:按以下类图定义接口及其实现类:练习:按以下类图定义接口及其实现类:Music5.javan 多个无关的类可以实现同一个接口;一个类可以实现多个无多个无关的类可以实现同一个接口;一个类可以实现多个无关的接口,因此用接口可以模拟实现多重继承关的接口,因此用接口可以模拟实现多重继承n 与继承关系类似,接口与实现类之间存在多态性与继承关系类似,接口与实现类之间存在多态性n 定义定义Java类的语法格式:类的语法格式: class extends implements , * *publicfinalclassStringextendsObje

4、ctimplementsSerializable,Comparable,CharSequence接口特性接口可以多重实现;接口中声明的属性默认为public static final的;也只能是public static final的;接口中只能定义抽象方法,而且这些方法默认为public的、也只能是public的;接口可以继承其它的接口,并添加新的属性和抽象方法。接口用法总结通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。通过接口可以指明多个类需要实现的方法。通过接口可以了解对象的交互界面,而不需了解对象所对应的类。为什么需要常量生活中,一周有七天,如何用代码表示?pu

5、blic 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天天控制台输出控制台输出然而,总有不尽人

6、意的事情发生:一周有一周有8天天控制台输出控制台输出如何保证变量的值在运行期无法被改变?如何保证变量的值在运行期无法被改变?使用常量使用常量 什么是常量常量是一种标识符,它的值在运行期间恒定不变常量标识符在程序中只能被引用,而不能被重新赋值常量圆周率PI圆周率PI代码表示方式public static final double PI = 3.14159265358979323846;用法将ang角度转换成径度 public static double toRadians(double ang) return ang / 180.0 * PI;常量的优点如果不使用常量,直接在程序中填写数字或字符

7、串,将会有什么麻烦?public static double toRadians(double ang) return ang / 180.0 * 3.14159265358979323846;public static double toDegrees(double ang) return ang * 180.0 / 3.14159265358979323846;public static final double PI = 3.14159265358979323846; / 圆周率圆周率public static double toRadians(double ang) return an

8、g / 180.0 * PI;public static double toDegrees(double ang) return ang * 180.0 / PI;程序的可读性变差:用户很难理解数字或字符串的意思程序的可维护性变差:如果数值改变,则需要在很多地方改动,既麻烦又易出错使用常量可以增强程序的可读性、可维护性使用常量可以增强程序的可读性、可维护性Java中常量的定义规则加入final 关键字代表常量, 加入static 关键字代表类变量尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串public class Student public static final in

9、t 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接

10、口通常是存放常量的最佳地点public interface School public static final String STU = “我是学生我是学生; public static final String TECH= “我是老师我是老师; public interface School String STU = “我是学生我是学生; String TECH = “我是老师我是老师;等同于等同于OO思想总结OO基本特征定义具体实现方式优势封装隐藏实现细节,对外提供公共的访问接口属性私有化、添加公有的setter、getter方法增强代码的可维护性继承从一个已有的类派生出新的类,子类具有

11、父类的一般特性,以及自身特殊的特性继承需要符合的关系:is-a1、实现抽象(抽出像的部分)2、增强代码的可复用性多态同一个实现接口,使用不同的实例而执行不同操作通过Java接口/继承来定义统一的实现接口;通过方法重写为不同的实现类/子类定义不同的操作增强代码的可扩展性、可维护性4.7.4接口与抽象类比较接口与抽象类比较接口和抽象类的联系与区别4.7.5final关键字关键字final是最终修饰符,可以修饰类、属性和方法。它几乎和abstract是完全相反的概念:final类不能被继承,没有子类,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final

12、成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法4.7.5final关键字关键字最终类如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。例子:String的类声明:定义一个类继承最终类String :参看课本例4.234.7.5final关键字关键字最终属性final字段,只能存储一个数据,而且不得改变。例:最终变量的使用:参看课本例4.244.7.5final关键字关键字最终方法为方法“上锁”,防止任何继承类改变它的本来含义。调用final方法时候会转入内嵌机制, 大大提高执行效率 。参看课本例4.254.7.5final关键字

13、关键字最终参数当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。例:试图改变最终参数参看课本例4.26 总结总结public interface Introduceable public String detail();public void introduction()detail();private void showMessage();void speak();Java接口中的方法必须是接口中的方法必须是publicJava接口中不能有方法体实现接口中不能有方法体实现 编译器会自动加上编译器会自动加上public修饰符修饰符请指出下列Java代码中的错误。总结总

14、结public interface Introduceable public String detail();public void introduction()detail();private void showMessage();void speak();Java接口中的方法必须是接口中的方法必须是publicJava接口中不能有方法体实现接口中不能有方法体实现 编译器会自动加上编译器会自动加上public修饰符修饰符请指出下列Java代码中的错误。小结学习了抽象类和接口;复习了方法的重载复习对象构造和初始化过程;课后作业1.请编写一个class,使它拥有一个blank final的jav

15、a.util.Date对象,请初始化该变量并使用该变量。体会:final使用之前一定需要初始化,并且一旦初始化后就无法改变其引用。2.编写一个final类,并尝试继承该类。3.请证明:class的载入动作只发生一次。也请证明:class的载入动作发生在产生该类的第一个实例时或其static成员第一次被调用时4.编写程序证明interface内的成员被自动设为static和final的;5.编写一个Shape接口,至少定义两个方法double area()以及void draw()方法。在另外一个package编写类Circle、Rectangle,实现Shape接口以及java.lang.Comparable接口。测试Circle和Rectangle类

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号