【问题标题】:Java function with parameters as two classes带有参数的Java函数作为两个类
【发布时间】:2014-05-09 08:39:53
【问题描述】:

我需要做以下事情:

class A
int length, width, height;

class B
int length, width, density;

(重要的是这些类有不同的参数)

这是架构,而不是代码。现在我想做一个函数来做这样的事情:

function compare(class first, class second)
{
    if( first.length > second.length )
    { ... }
    else
    { ... }
}

并调用该函数:compare(A,B)

是否可以按照我描述的那样做,或者有什么更好的方法?

【问题讨论】:

  • 完全可以做到。当您使用对成员变量的直接访问时,您需要将它们公开。
  • 先上课,这是错误的。先放A。

标签: java function class object


【解决方案1】:

建立班级层次结构。定义一个包含长度和宽度的超类;让它实现 Comparable 并传入超类以仅比较长度和宽度;然后子类来获取您的 A 和 B 类,这样您就不会默认比较宽度/高度。

【讨论】:

    【解决方案2】:

    首先,您定义一个超类A

    public class A {
        private int length;
    
        public A(int length) {
           this.length = length'
        }
    
        public int getLength() { return length; }
    }
    

    并创建两个子类,BC

    public class B extends A { 
        public B(int length) {
           super(length);
        }
    }
    
    public class C extends A { 
        public B(int length) {
           super(length);
        }
    }
    

    现在您可以创建一个名为:

    public void compare(A first, A second) {
        if(first.getLength() > second.getLength()) {
             // Do something..
        }
    }
    

    这可以这样调用:

    A b = new B(5);
    
    A c = new C(6);
    
    compare(b, c);
    

    【讨论】:

    • 为什么还要继承?为什么要有 C 类?
    • 我想你可以有一个接口C,但考虑到用户想要访问一个公共属性,我将它移到超类是有道理的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2010-11-20
    相关资源
    最近更新 更多