[英]restricting a class method overridden by few child classes
我在1次采访中询问了1个问题
class Birds {
public void fly();
public void eat();
public void sleep();
}
Have several other classes extending it like -
Sparrow extends Birds{
overriding fly();// Sparrow can have its own style to fly
overriding eat();
overriding sleep();
}
Eagle extends Birds{
overriding fly();// Eagle can have its own style to fly
}
Ostrich extends Birds {
overriding fly();// Ostrich could not fly !!!
}
我怎么能限制这种情况? 由于父类在此处不知道其Child类。 Birds类扩展了一些类可以覆盖的类有些无法覆盖。
你需要使用组合 :
定义一个名为Flyable
的interface
,它有一个fly()
方法。 Sparrow
和Eagle
实现了这个界面。 Ostrich
没有。
定义一个名为Living
的接口,比如说有eat()
和sleep()
方法。 所有类型都实现了该接口。
你可以向你的面试官指出,你可以拥有一个实现Flyable
而不是 Living
的Aeroplane()
对象。
您可以简单地添加FlyingBird和GroundBird类并使它们抽象化。
public class Birds {
public void eat() {
// default implementation
}
public void sleep() {
// default implementation
}
}
abstract class FlyingBird extends Birds {
public abstract void fly();
}
abstract class GroundBird extends Birds {
public abstract void walk();
}
class Sparrow extends FlyingBird {
@Override
public void eat() {
// different implementation
}
@Override
public void sleep() {
// different implementation
}
@Override
public void fly() {
// some impl
}
}
class Eagle extends FlyingBird {
@Override
public void fly() {
// some impl
}
}
class Ostrich extends GroundBird {
@Override
public void walk() {
// walk implementation
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.