java - 如何有效浏览Java中的扩展和实现?

原文 标签 java inheritance polymorphism

在纸上,多态的想法听起来很棒。在现实生活中,有人加入了一个新项目并开始处理以下代码:

class Tom extends Cat implements Male {
temperature temperature = Tom.getTemperature();
..............
class Cat extends Feline{
..............
class Feline extends Mammals{
..............
class Mammals extends Animals implements WarmBlooded{
....... 
interface WarmBlooded{
int temperature=96; //In case they forget to set the right temperature...
public int getTemperature(){
return temperature;
}


相比于

Cat cat = new Cat(Tom, m, 96);




class Cat(Stiing name, char gender, int temperature){
    ....
}  


当然,通过实现WarmBlooded我们节省了几行代码,但是要花多少钱呢?我们必须仔细检查多个类,才能找出getTemperature()在做什么-这不是意大利面条代码的示例吗?数百万的程序员选择了Java。多态性一定有原因。无论如何,我都必须牢记我要制造的猫的名字,性别和温度。实现Male与创建Tom时将“ m”作为参数传递没有什么不同。为什么不将所有内容捆绑在Cat中?

这是否意味着我应该阅读并理解整个项目才能开始从多态中受益?有什么方法可以使扩展/实现中的浏览更加容易?



有效浏览扩展/实现的含义是什么?
这意味着“可以在合理的时间内找出此方法的作用”。

最佳答案

使用IDE。如NetBeans或Eclipse。另外,使用UML。否则很难遵循该代码。它允许您单击getTemperature()来查看实现。

 Class Feline is useless if it only holds   
    Boolean isFeline = true;


但是,如果它拥有多种方法,则将使生活更加轻松-您不必牢记所有这些方法。

Java最适合大型项目。加入此类项目可能会更加困难。

关于java - 如何有效浏览Java中的扩展和实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37792393/

相关文章:

java - 如何避免在 IntelliJ 中显示调试已开始和结束的消息?

java - --single-transaction --lock-tables 的 mysqldump 选项-内部发生了什么?

c++ - 为什么析构函数被执行两次?

c++ - 为什么要使用继承和多态性而不是函数模板实例来调用具有相同签名的成员函数?

c++ - 将 crtp 与通用接口(interface)类一起使用时,如何避免虚拟调用开销?

c++ - 从基指针列表循环 (OOD) 调用派生类方法

c++ - 一元运算符-使用 friend 函数的运算符重载

java - hibernate 条件 : find entity if any of its children's children have a specific property

java - 在JavaFX TextField中输入文本会卡住应用程序

java - 为什么这个对象可以访问其父类的方法?