gpt4 book ai didi

java - 如何跳过扩展抽象类的类中的一个方法?

转载 作者:行者123 更新时间:2023-11-30 11:29:15 24 4
gpt4 key购买 nike

我有一个名为 Animal 的抽象类,它有大约 100 种方法,包括 swim

许多类,如 Dog、Cat、Lion 都扩展了该类。

现在有一种不会游泳的动物长颈鹿。但它扩展了 Animal 抽象类。

我希望长颈鹿对象没有 swim 方法。

Giraffe g = new Giraffe();
//g.swim(); // This swim should not come.

我无法更改 Animal Class。一种解决方案是再创建一个抽象类,复制除 swim 之外的所有方法。但这不是一个好方法。

我如何使用 Animal 抽象类来做到这一点?预先感谢。

最佳答案

你不能通过契约(Contract)来引起 java 指南。如果你说 Animal 会游泳,那么所有动物都会游泳,包括长颈鹿,如果不是,那么长颈鹿就不是动物。

你唯一能做的就是不改变 Animal

@Override
public void swim(){
throw new UnsupportedOperationException();
}

你可以做的另一件事是创建另一个类

public class Giraffe {

private final Animal a;

public Giraffe(Animal a){
this.a=a;
}

public void method1(){
a.method1();
}

public Something drink(){
return a.drink();
}
.
.
.
// and not implementing swim
}

另一个是为 Animal 制作一个没有 swim() 方法的 super 接口(interface),并让 Animal 实现它。

关于java - 如何跳过扩展抽象类的类中的一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18465119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com