第五章接口 抽象类 多态 接
第五章 接口 ▪ 抽象类 ▪ 多态 ▪ 接口
抽象类 Animal 回顾Anma的类结构: make Noise eato 1通过继承最大限度地减少了重复代 sleep 码 roam 2通过覆盖,以及多态的特征保证每 个子类的独特性 3在一使用Anma的程序里, Feline Canine (包括 Animal作为形参或数 roam roam 组声明里), 任何 Anima的子类型(现有或以 一后添加的)都可以作为实参被传 Lion Cat Wolf Dog 递,并在运行时得到类型识别。 nake Noise0 make Noise0 make Noised make NoiseO eato eato eato eato
Animal makeNoise() eat() sleep() roam() Canine roam() Wolf makeNoise() eat() Dog makeNoise() eat() Feline roam() Lion makeNoise() eat() Cat makeNoise() eat() 回顾Animal的类结构: 1 通过继承最大限度地减少了重复代 码 2 通过覆盖,以及多态的特征保证每 个子类的独特性。 3 在一使用Animal的程序里, (包括Animal作为形参或数 组声明里), 任何Animal的子类型(现有或以 后添加的)都可以作为实参被传 递,并在运行时得到类型识别。 抽象类
过去在程序里说: Dog my Dog =new Dogo; Dog对象 现在在程序里说 bog引用 Animal my Dog new DogO 两者的类型是相同的 Dog对象 Anima引用 两者的类型是不同的
过去在程序里说: Dog myDog =new Dog() ; Animal myDog= new Dog() ; 1 Dog 对象 Dog引用 两者的类型是相同的 1 Dog 对象 Animal引用 两者的类型是不同的 现在在程序里说:
下面这句有些不自然: Animal anim=new Animal Anima|对象 Animal引用 两者的类型相同,但是一个 实际的Anma对象可以是什 么呢?
下面这句有些不自然: Animal anim=new Animal() ; 1 ? Animal 对象 Animal引用 两者的类型相同,但是一个 实际的Animal对象可以是什 么呢? ?
需要一个Anma类,用于继承和多态 不需要实例化Anma类,不需要一个 Anima对象 需要一个防止类被实例化的方法 把该类标记为“ abstract
需要一个Animal类,用于继承和多态 不需要实例化Animal类,不需要一个Animal对象 需要一个防止类被实例化的方法: 把该类标记为“abstract