私はそのような問題を抱えています-1つの抽象クラスとそのクラスから継承する多くのクラスがあります。その非抽象クラスのオブジェクトを引数として取得する関数があります。非抽象クラスのオブジェクトを返す必要がありますが、実行時にどちらが正確に返されるかはわかります。何か案は?
ここにサンプルコードがあり、どのように見えるか:
public abstract class Shape {
int x, y;
void foo();
}
public class Circle extends Shape {
int r;
void bar();
}
public class Square extends Shape {
int a;
void bar();
}
どちらのクラスでも、メソッドbar()は同じことを行います。そして今、そのようなことをするために:
/* in some other class */
public static Shape iHateWinter(Shape a, Shape b) {
Random rnd = new Random();
Shape result;
/*
btw. my second question is, how to do such thing:
a.bar(); ?
*/
if(rnd.nextInt(2) == 0) {
/* result is type of a */
} else {
/* result is type of b */
}
手伝ってくれてありがとう。