我的导师发布了一个示例期中考试,我对以下问题感到困惑:
显示继承的示例,不带子类型和没有继承的子类型。
我们使用以下定义,并且我们使用Java编程:http://www.cmi.ac.in/~madhavan/courses/pl2006/lecturenotes/lecture-notes/node28.html
表示这两个想法的好方法是什么?
答案 0 :(得分:0)
根据列出的子类型定义:
子类型是指接口的兼容性。如果可以在类型B的对象上调用可以在类型A的对象上调用的每个函数,则类型B是A的子类型。
Java中的子类型基本上类似于在Java中扩展或实现接口。例如:
interface Fish {
void swim();
}
interface FlyingFish extends Fish {
void fly();
}
在这里,FlyingFish
是Fish
的子类型,因为飞鱼总是一种鱼类。
根据列出的继承定义:
继承是指重用实现。如果B的某些函数是根据A的函数编写的,则类型B继承自另一个类型A.
此定义继承是指Java中的实现继承。这通常也是一种子类型,但并不总是设计不良的分类法,你会在职业生涯中看到这些分类法。 ;-)例如:
class FlyingFish {
void swim() {
// implementation code to swim in water
}
void fly() {
// implementation code to jump out of the water and fly
}
}
class Bird extends FlyingFish {
// no need to implement fly, reuse implementation of flying fish
void swim() {
// do nothing implementation - most birds can't swim.
}
}
class Fish extends FlyingFish {
void fly() {
// do nothing implementation - most birds can't swim.
}
// no need to implement swim, reuse implementation of flying fish
}
此处,Bird
和Fish
都不恰当地从FlyingFish
继承,即使Bird
和Fish
都不是飞鱼的子类型。< / p>
如果您有任何后续问题,希望有所帮助,发表评论。另外,一本值得您光顾的书是Josh Boch的 Effective Java 2nd Ed。。在这本书中,Bloch给出了一些非常好的内容。