《Java程序设计第3章类、类的继承和接口.ppt》由会员分享,可在线阅读,更多相关《Java程序设计第3章类、类的继承和接口.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章 类、类的继承和接口类、类的继承和接口本章目标本章目标理解面向对象程序设计的思想理解面向对象程序设计的思想掌握与面向对象的封装性相关的基本概念掌握与面向对象的封装性相关的基本概念掌握与面向对象的继承性相关的基本概掌握与面向对象的继承性相关的基本概掌握与面向对象的多态性相关的基本概念掌握与面向对象的多态性相关的基本概念第第3章章 类、类的继承和接口类、类的继承和接口3.1 类类3.2 包的创建和使用、源文件结构包的创建和使用、源文件结构3.3 类的继承和多态类的继承和多态3.4 接口和接口的实现接口和接口的实现3.5 内部类和匿名内部类内部类和匿名内部类3.1 类类3.1.1 类的
2、修饰符类的修饰符3.1.2 类的成员类的成员3.1.3 域、域的访问控制修饰符和其他修饰符域、域的访问控制修饰符和其他修饰符3.1.4 静态方法、抽象方法和最终方法静态方法、抽象方法和最终方法3.1.5 构造方法构造方法3.1.6 关键字关键字this3.1.7 抽象和封装抽象和封装3.1.8 对象的清除对象的清除3.1 类类3.1.1 类的修饰符类的修饰符修饰符修饰符1 class 类名类名 extends 父类名父类名 implements 接口名列表接口名列表 修饰符修饰符2 类型名类型名 域名域名;public 类名类名(参数列表参数列表)/;修饰符修饰符3 返回值类型返回值类型 方法
3、名方法名(参数列表参数列表)throws 异常异常/;修饰符修饰符1:public、abstract|final修饰符修饰符2:public|protected|private、static、fianl、transient、volatile修饰符修饰符3:public|protected|private、static、fianl|abstract、synchronized、native3.1 类类3.1.2 类的成员类的成员域:也称属性、字段、成员变量。域:也称属性、字段、成员变量。方法方法内部类内部类3.1 类类3.1.3 域、域的访问控制修饰符和其他修饰符域、域的访问控制修饰符和其他修饰符
4、域的初始化域的初始化声明其他类对象作为一个类的域声明其他类对象作为一个类的域域的访问控制域的访问控制封装和公开封装和公开静态域静态域最终域最终域域的声明格式域的声明格式3.1 类类3.1.3 域、域的访问控制修饰符和其他修饰符域、域的访问控制修饰符和其他修饰符域的初始化域的初始化All reference typenullbyte、short、int0long0Lfloat0.0Fdouble0.0Dcharu0000booleanfalse;例例3.1(Page94):TestBirthdy.java3.1 类类3.1.3 域、域的访问控制修饰符和其他修饰符域、域的访问控制修饰符和其他修饰符
5、声明其他类对象作为一个类的域声明其他类对象作为一个类的域例例3.2(Page96):):TestPerson.java与与Person.java3.1 类类3.1.3 域、域的访问控制修饰符和其他修饰符域、域的访问控制修饰符和其他修饰符域的访问控制域的访问控制封装和公开封装和公开访问权限修饰符访问权限修饰符类类子类子类包包其它类其它类privateXdefaultXXprotectedXXXpublicXXXX3.1 类类3.1.3 域、域的访问控制修饰符和其他修饰符域、域的访问控制修饰符和其他修饰符域的访问控制域的访问控制封装和公开封装和公开为了实现良好的封装性,通常将类的域声明为为了实现良
6、好的封装性,通常将类的域声明为private,再通过再通过public的方法来对这个域进行访问。的方法来对这个域进行访问。例例3.3(Page98)3.1 类类3.1.3 域、域的访问控制修饰符和其他修饰符域、域的访问控制修饰符和其他修饰符静态域静态域所有对象共享的所有对象共享的域,也称域,也称类变量类变量(区别于(区别于实体变实体变实体变实体变量量量量),用),用static修饰,可通过对象名或修饰,可通过对象名或类名访问类名访问。例例3.4(Page100):):TestCar.java与与Car.java不能把任何方法体中的变量不能把任何方法体中的变量(局部变量)声明为静态的!(局部变量
7、)声明为静态的!注意注意3.1 类类3.1.3 域、域的访问控制修饰符和其他修饰符域、域的访问控制修饰符和其他修饰符最终域最终域public static final 类型类型 常量名常量名=初始值;初始值;最终域的值一旦确定就不能重新赋值!最终域的值一旦确定就不能重新赋值!一般通过类名引用最终域。一般通过类名引用最终域。域的声明格式域的声明格式3.1 类类3.1.4 静态方法、抽象方法和最终方法静态方法、抽象方法和最终方法方法的定义格式方法的定义格式方法的访问控制修饰符方法的访问控制修饰符静态方法静态方法最终方法最终方法抽象方法抽象方法3.1 类类3.1.4 静态方法、抽象方法和最终方法静态
8、方法、抽象方法和最终方法静态方法静态方法有时希望有时希望不创建对象不创建对象就能就能调用调用某个方法某个方法调用静态方法的格式:调用静态方法的格式:类名类名.静态方法静态方法或者或者对象名对象名.静态方法静态方法例例3.5(Page103):):UseStaticVar.java3.1 类类3.1.4 静态方法、抽象方法和最终方法静态方法、抽象方法和最终方法静态方法静态方法在静态方法里只能在静态方法里只能直接调用同类直接调用同类中其他的静态成中其他的静态成员,而不能员,而不能直接调用同类直接调用同类中的非静态成员。中的非静态成员。静态方法不能以任何方式引用静态方法不能以任何方式引用this和和
9、super关键字。关键字。注意注意3.1 类类3.1.4 静态方法、抽象方法和最终方法静态方法、抽象方法和最终方法最终方法最终方法用关键字用关键字final修饰的方法,不能被重写修饰的方法,不能被重写/覆盖覆盖(Page104)。)。抽象方法抽象方法用关键字用关键字abstract修饰的方法,只有方法头,修饰的方法,只有方法头,没没有方法体有方法体。左、右花括号左、右花括号+左、右左、右花括号之间的部分,花括号之间的部分,均用分号代替!均用分号代替!3.1 类类3.1.5 构造方法构造方法构造方法的规则:构造方法的规则:Page105构造方法的重载构造方法的重载例例3.6(Page106):)
10、:TestBirthday.java与与Birthday.java3.1 类类3.1.6 关键字关键字this含义及使用:含义及使用:Page107例例3.6(Page107):):TestBirthday.java与与Birthday.java3.1 类类3.1.7 抽象和封装抽象和封装3.1.8 对象的清除对象的清除垃圾回收器垃圾回收器System.gc();3.2 包的创建和使用、源文件结构包的创建和使用、源文件结构3.2.1 包包3.2.2 创建包和使用包中的类创建包和使用包中的类3.2.3 源文件结构和程序说明文档的生成源文件结构和程序说明文档的生成3.2 包的创建和使用、源文件结构
11、包的创建和使用、源文件结构3.2.1 包包Java通过引入包通过引入包(package)机制,提供类的多层类命机制,提供类的多层类命名空间,来解决类的命名冲突问题。名空间,来解决类的命名冲突问题。完整的类名是:包名完整的类名是:包名.类名。类名。类及类成员的访问:类及类成员的访问:Page110。3.2 包的创建和使用、源文件结构包的创建和使用、源文件结构3.2.2 创建包和使用包中的类创建包和使用包中的类package语句语句package 包名包名.下一级包名下一级包名.;javac命令中的命令中的-d选项选项import语句语句import 包名包名.类名类名;import 包名包名.*
12、;3.2 包的创建和使用、源文件结构包的创建和使用、源文件结构3.2.3 源文件结构和程序说明文档的生成源文件结构和程序说明文档的生成Page 1133.3 类的继承和多态类的继承和多态3.3.1 类的包含关系和继承关系类的包含关系和继承关系3.3.2 类成员的继承和重新定义类成员的继承和重新定义3.3.3 子类对父类构造方法的调用子类对父类构造方法的调用关键字关键字super3.3.4 父类和子类对象的转换父类和子类对象的转换3.3.5 抽象类和最终类抽象类和最终类3.3 类的继承和多态类的继承和多态3.3.1 类的包含关系和继承关系类的包含关系和继承关系汽车汽车发动机发动机车轮车轮方向盘方
13、向盘Has-A(包含)关系(包含)关系红星苹果红星苹果红富士苹果红富士苹果苹果苹果梨梨水果水果Is-A(继承)关系(继承)关系3.3 类的继承和多态类的继承和多态3.3.2 类成员的继承和重新定义类成员的继承和重新定义例例3.10(P113)、例、例3.11(P119)与例与例3.12(P120)定义子类的格式:定义子类的格式:extends关键字关键字类成员的继承类成员的继承子类拥有父类所有子类拥有父类所有非私有非私有变量变量(/域域)和方法的和方法的使用权使用权。子类添加成员子类添加成员3.3 类的继承和多态类的继承和多态3.3.2 类成员的继承和重新定义类成员的继承和重新定义重新定义从父
14、类继承来的成员重新定义从父类继承来的成员方法覆盖的规则方法覆盖的规则变量隐藏:可通过变量隐藏:可通过”super.变量名变量名”引用父类同名变量。引用父类同名变量。方法覆盖方法覆盖定义:子类有与父类同名的方法。定义:子类有与父类同名的方法。规则:规则:Page118子类的方法名、返回值类型、子类的方法名、返回值类型、参数列表参数列表与父类与父类一样一样访问控制级别:子类不能比父类更严格(宽松性:访问控制级别:子类不能比父类更严格(宽松性:publicprotected默认默认private)异常:子类不多于父类异常:子类不多于父类3.3 类的继承和多态类的继承和多态3.3.3 子类对父类构造方
15、法的调用子类对父类构造方法的调用关键字关键字super(例例3.13、例、例3.14)super.变量名变量名引用被子类隐藏的变量引用被子类隐藏的变量super.方法名方法名调用被子类覆盖的父类的方法调用被子类覆盖的父类的方法super(参数列表参数列表)子类构造方法调用父类构造方法子类构造方法调用父类构造方法super(参数列表参数列表)必须是子类构造方法中的第一个语句!必须是子类构造方法中的第一个语句!不能与不能与this(参数列表参数列表)同时出现在构造方法中!同时出现在构造方法中!注意注意3.3 类的继承和多态类的继承和多态3.3.4 父类和子类对象的转换父类和子类对象的转换gouGo
16、uIs yanJing an Animal?Is yanJing a Dog?Animal yanJing=new Dog();Dog gouGou=(Dog)yanJing;yanJing父类父类子类子类3.3 类的继承和多态类的继承和多态3.3.4 父类和子类对象的转换父类和子类对象的转换Is yanJing an Animal?Is yanJing a Dog?Animal yanJing=new Cat();Dog gouGou=(Dog)yanJing;yanJing3.3 类的继承和多态类的继承和多态3.3.4 父类和子类对象的转换父类和子类对象的转换gouGouAnimal ya
17、nJing=new Dog();if(yanJing instanceof Dog)Dog gouGou=(Dog)yanJing;yanJingIs yanJing a Dog?instanceofyanJing.shout();shout()3.3 类的继承和多态类的继承和多态3.3.5 抽象类和最终类抽象类和最终类抽象类抽象类由由abstract修饰的类,只能做父类,不能实例化。修饰的类,只能做父类,不能实例化。最终类最终类由由final修饰的类,不能做父类。修饰的类,不能做父类。3.4 接口和接口的实现接口和接口的实现3.4.1 接口概述接口概述3.4.2 自定义接口和实现接口自定义接
18、口和实现接口3.4.3 Java类库中的接口实现举例类库中的接口实现举例3.4 接口和接口的实现接口和接口的实现3.4.2 自定义接口和实现接口自定义接口和实现接口自定义接口自定义接口public interface 接口名称接口名称 extends 父接口名列表父接口名列表 /静态常量静态常量 public static final 数据类型数据类型 变量名变量名=常量值;常量值;/抽象方法抽象方法 public abstract 返回值类型返回值类型 方法名方法名(参数列表参数列表);3.4 接口和接口的实现接口和接口的实现3.4.2 自定义接口和实现接口自定义接口和实现接口实现接口实现接
19、口修饰符修饰符 class 类名类名 extends 父类名父类名 implements 接口接口A,接口接口B,类的成员变量和成员方法;类的成员变量和成员方法;为接口为接口A中的所有方法编写方法体,实现接口中的所有方法编写方法体,实现接口A;为接口为接口B中的所有方法编写方法体,实现接口中的所有方法编写方法体,实现接口B;3.4 接口和接口的实现接口和接口的实现3.4.2 自定义接口和实现接口自定义接口和实现接口接口实现举例接口实现举例Assembler.java思考:如果思考:如果SoundCard类中具有类中具有PCI接口中的所有方接口中的所有方法,但没有明确声明它实现了法,但没有明确声明它实现了PCI接口,接口,SoundCard的对象实例能不能直接传递给的对象实例能不能直接传递给MainBoard的的usePCICard方法使用?方法使用?3.5 内部类和匿名内部类内部类和匿名内部类要点总结要点总结类的定义(类的定义(private/public成员、成员、this、常量)、常量)对象的创建与使用(构造方法、对象的创建与使用(构造方法、new、域选择运、域选择运算符)算符)包的声明与引用包的声明与引用类的继承(类的继承(extends、super)、方法覆盖()、方法覆盖(/重重载)、对象类型转换载)、对象类型转换接口的定义与实现接口的定义与实现
限制150内