【发布时间】:2011-09-15 17:25:57
【问题描述】:
class base{}
class childA extends base{}
class childB extends base{}
我有两个函数(重载) 像这样:
function(childA,childA){}
function(childA,childB){}
//主程序
base a = new childA();
base b = new childB();
function(a,b);
function(a,a); //problem
函数调用显然不会编译。
但是有没有一种方法可以在不使代码过于复杂或每次调用函数时进行类型检查的情况下获得相同的效果。
注意:重载函数独立于类。类只是数据结构,我宁愿没有任何相互依赖的代码。
附言。我经历了很多涉及类似问题的主题,但它们似乎并没有解决上述问题。对不起,如果我错过了什么,(新手,第一篇文章等:))。
编辑:
似乎我的例子有点含糊,我只是想从总体上理解这个概念,而不仅仅是解决眼前的问题。上面的代码不起作用似乎很奇怪,如果它起作用了,那将是一个强大的功能。
好吧,另一个例子,这几乎就是我想要做的。
class Shape{}
class Rectangle extends Shape{
//rectangle data
}
class Circle extends Shape{
//circle data
}
重载函数(另一个类的成员)
boolean checkIntersection(Rectangle r, Circle c){}
boolean checkIntersection(Circle c, Circle c){}
//主程序
Vector<Shape> shapes = new Vector<Shape>();
shapes.add(new Rectangle());
shapes.add(new Circle());
shapes.add(new Circle());
checkIntersection(shapes.get(0),shapes.get(1));
checkIntersection(shapes.get(1),shapes.get(2));
【问题讨论】:
-
另外,Java标准是在命名类时使用UpperCamelCase。
-
知道..但它并没有真正成为第二天性。我只在认真编写代码时使用它。
标签: java polymorphism overloading