Java语言程序设计-抽象类和接口-(1).ppt
《Java语言程序设计-抽象类和接口-(1).ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计-抽象类和接口-(1).ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java Programming2内内 容容 抽象类抽象类 通用超类通用超类 对象的类型识别对象的类型识别 对象的类型转换对象的类型转换 接口接口 嵌套类嵌套类Java Programming3抽象类抽象类 抽象类抽象类(abstract classabstract class)使用关键字使用关键字abstractabstract定义定义 不能被实例化的类不能被实例化的类public abstract class Animal Animal aAnimal = new Animal();错错Java Programming4抽象方法抽象方法 抽象方法抽象方法(abstract methodab
2、stract method) 声明了,但没有被实现的方法声明了,但没有被实现的方法没有方法体没有方法体 抽象类通过抽象方法为其子类定义公共接口抽象类通过抽象方法为其子类定义公共接口 迟早要派生出一个非抽象的子类,实现了全部抽象方法,从而生成迟早要派生出一个非抽象的子类,实现了全部抽象方法,从而生成该类型的对象该类型的对象 抽象方法不能指定为抽象方法不能指定为private或或static或或final 因为此类方法不能在子类中重新定义,即不能被覆盖因为此类方法不能在子类中重新定义,即不能被覆盖public abstract class Animal public abstract void s
3、ound(); Java Programming5抽象类与抽象方法抽象类与抽象方法 抽象类可以不包含抽象方法抽象类可以不包含抽象方法 使用使用abstract就可以定义抽象类就可以定义抽象类 包含抽象方法的类一定是抽象类包含抽象方法的类一定是抽象类 抽象方法可以是在自己内部声明的抽象方法可以是在自己内部声明的 抽象类的子类也可以是抽象类抽象类的子类也可以是抽象类 也可以是从超类继承的也可以是从超类继承的 抽象类的子类也可以不实现继承的抽象方法抽象类的子类也可以不实现继承的抽象方法Java Programming6抽象类与多态抽象类与多态 从从 类类 的角度分离接口和实现的角度分离接口和实现 基
4、类定义公共接口基类定义公共接口 子类实现该接口子类实现该接口sound()Animalsound()Dogsound()Catsound()Duck定义了一个公共接口定义了一个公共接口实现公共接口实现公共接口Java Programming7通用超类通用超类 通用超类通用超类java.lang.Objectjava.lang.Object 是所有定义的类的超类是所有定义的类的超类 不需要明确指定不需要明确指定ObjectObject类型的变量可以存储任何类型对象的引用类型的变量可以存储任何类型对象的引用Object obj;Object objArray;ObjectJava Programm
5、ing8ObjectObject的方法成员的方法成员 ObjectObject只有下面的方法成员只有下面的方法成员被所有的类继承被所有的类继承public String toString() /返回描述对象的返回描述对象的String对象对象public boolean equals(Object obj) /比较两对象的引用比较两对象的引用public int hashCode() /计算对象的散列码,并以计算对象的散列码,并以int类型返回类型返回public final Class getClass() /返回一个返回一个Class对象,以识别对象的类对象,以识别对象的类public f
6、inal void notify() /唤醒一个与当前对象关联的线程唤醒一个与当前对象关联的线程public final void notifyAll() /唤醒所有与当前对象关联的线程唤醒所有与当前对象关联的线程public final void wait() /导致一个线程等待当前对象中发生的变化导致一个线程等待当前对象中发生的变化protected Object clone() /复制当前对象复制当前对象protected void finalize() /在销毁对象时被调用,用于清理工作在销毁对象时被调用,用于清理工作Java Programming9ObjectObject的的toS
7、tring()toString()方法方法 toString()toString()方法方法 举例举例 注释注释Animal的的toString()方法方法 Animal继承继承Object的的toString()方法方法 编译运行编译运行TestPolymorphism可以看到可以看到Object的的toString()方方法如何输出对象法如何输出对象Dog19821f对象的类名对象的类名对象的散列码对象的散列码Java Programming10确定对象的类型确定对象的类型 ClassClass类型的对象类型的对象 getClass()方法会返回一个方法会返回一个Class类型的对象类型的
8、对象 用来识别一个对象的类型用来识别一个对象的类型class TryClass public static void main(String args) System.out.println(new Dog(小黑小黑).getClass().getName(); Object str = A String; System.out.println(str.getClass().getName(); Dogjava.lang.String类类Class的成员,返回完整的成员,返回完整的类名(带包名)的类名(带包名)Class对象返回对象实际对对象返回对象实际对应的类应的类Java Programm
9、ing11ClassClass对象对象 ClassClass类型的对象类型的对象 在系统装载程序(类文件)时自动为每个类创建在系统装载程序(类文件)时自动为每个类创建Class对象对象不能自己创建不能自己创建Class对象对象,因为类,因为类Class没有提供构造函数没有提供构造函数class TryClass public static void main(String args) throws ClassNotFoundException System.out.println(Dog.class); System.out.println(int.class); System.out.pri
10、ntln(Integer.class.getName(); System.out.println(Class.forName(java.lang.String); class Dogintjava.lang.Integerclass java.lang.String获得类的获得类的ClassClass对象对象 .class .class Class.forName()Java Programming12ClassClass对象对象 利用利用ClassClass对象检测对象的类型对象检测对象的类型 每个类都有每个类都有唯一的唯一的Class对象对象Animal pet = new Duck(“小
11、鸭小鸭”);if (pet.getClass() = Duck.class) 两者引用同一个对象两者引用同一个对象Java Programming13instanceofinstanceof运算符运算符 利用利用instanceofinstanceof运算符检测对象的类型运算符检测对象的类型 判断一个对象是否是某一个类的实例判断一个对象是否是某一个类的实例Spaniel obj = new Spaniel(小狗小狗);if (obj instanceof Animal) System.out.println(该对象是该对象是Animal的实例的实例); if (obj instanceof D
12、og) System.out.println(该对象是该对象是Dog的实例的实例); if (obj instanceof Spaniel) System.out.println(该对象是该对象是Spaniel的实例的实例); 该对象是该对象是Animal的实例的实例该对象是该对象是Dog的实例的实例该对象是该对象是Spaniel的实例的实例Java Programming14对象的复制对象的复制 用从用从ObjectObject继承的方法继承的方法clone()clone()复制对象复制对象 要求被复制对象的类允许被复制要求被复制对象的类允许被复制 该类必须实现该类必须实现Cloneable
13、接口接口 生成一个与当前对象类型相同的新的对象生成一个与当前对象类型相同的新的对象 新对象中的每个成员域都设置成与当前对象对应的成员域相同的值新对象中的每个成员域都设置成与当前对象对应的成员域相同的值 如果成员域是引用类型,那么他所引用的对象并不被复制如果成员域是引用类型,那么他所引用的对象并不被复制 举例举例 让类让类Dog实现实现Cloneable接口,使其对象可被复制接口,使其对象可被复制public class Dog extends Animal implements Cloneable Java Programming15对象的复制举例对象的复制举例 举例举例 定义类定义类TryC
14、lone 创建一个创建一个Dog对象对象 调用该对象的调用该对象的Clone()方法复制一个方法复制一个Dog对象对象class TryClone public static void main(String args) throws CloneNotSupportedException Dog aDog = new Dog(白雪白雪); System.out.println(创建了一个对象:创建了一个对象:n+aDog); Dog bDog = (Dog)aDog.clone(); System.out.println(复制了一个对象:复制了一个对象:n+bDog); Java Progra
15、mming16对象的类型强制转换对象的类型强制转换 可以把一个对象的类型强制转换为另一种类型可以把一个对象的类型强制转换为另一种类型 当前对象的实际类型和新类型必须位于相同的派生类层次结构中当前对象的实际类型和新类型必须位于相同的派生类层次结构中 一个是另一个的超类一个是另一个的超类AnimalCatDogDuckObjectSpaniel向上类型转换向上类型转换向下类型转换向下类型转换对象的引用对象的引用Java Programming17向上类型转换向上类型转换 向上类型转换(向上类型转换(upupcastcastinging) 需要执行多态的方法时,把对象的引用存储在基类类型的变量中需要
16、执行多态的方法时,把对象的引用存储在基类类型的变量中 忽略特定类型的细节忽略特定类型的细节 把可能拥有多个子类的对象传递给方法把可能拥有多个子类的对象传递给方法 编译器会在必要时为对象自动插入强制类型转换编译器会在必要时为对象自动插入强制类型转换Spaniel aPet = new Spaniel(“白雪白雪”);Animal theAnimal = (Animal)aPet;可以省略不写可以省略不写Java Programming18向下类型转换向下类型转换 向下类型转换(向下类型转换(downcasting) 为了执行特定类的方法为了执行特定类的方法 扩展了类,打算向下类型转换访问扩展部分
17、扩展了类,打算向下类型转换访问扩展部分 Java在运行时用在运行时用instanceof进行类型转换检查进行类型转换检查 要转换到的类必须是该对象的实际类型或超类要转换到的类必须是该对象的实际类型或超类Dog aDog = (Dog)theAnimal;Dog是是theAnimal对象的超类对象的超类Java Programming19对象的类型强制转换举例对象的类型强制转换举例 举例举例 修改类修改类Duck的定义,增加方法的定义,增加方法layEgg() 该方法是该方法是Duck类特有的类特有的public class Duck extends Animal public void lay
18、Egg() System.out.println(下蛋下蛋); Java Programming20对象的类型强制转换举例对象的类型强制转换举例 举例举例 定义类定义类TestCastclass TestCast public static void main(String args) Duck aDuck = new Duck(唐纳唐纳, 美国鸭美国鸭); Animal aPet = aDuck; aPet.layEgg(); /不能编译不能编译 (Duck)aPet).layEgg();此处只能调用此处只能调用Animal中声明中声明的(多态)方法的(多态)方法Java Programmi
19、ng21对象的类型强制转换举例对象的类型强制转换举例 分析分析layEgg()sound()Animalsound()Dogsound()Catsound()DuckAnimal aPet;可以访问可以访问Animal定定义的公共接口义的公共接口(Duck)aPet).layEgg();可以访问可以访问Duck定定义的扩展接口义的扩展接口扩展接口扩展接口公共接口公共接口Java Programming22使用使用finalfinal修饰符修饰符 finalfinal此物不准动此物不准动 修饰数据成员以固定其值修饰数据成员以固定其值 修饰方法成员以阻止被子类中的方法覆盖修饰方法成员以阻止被子类中
20、的方法覆盖 修饰类以阻止派生出子类修饰类以阻止派生出子类Java Programming23接口接口 接口接口(interface) 接口声明了一组方法,表示一个特定的公共接口接口声明了一组方法,表示一个特定的公共接口 这些方法都没有定义方法体,即抽象的这些方法都没有定义方法体,即抽象的任何类都可以实现任何类都可以实现(implementimplement)某个接口某个接口 实现该接口的类要实现接口中的所有方法,即定义该方法的主体实现该接口的类要实现接口中的所有方法,即定义该方法的主体 使用该接口类型的变量来多态调用其中的方法使用该接口类型的变量来多态调用其中的方法 举例举例 定义接口定义接口
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言程序设计 抽象 接口
限制150内