Bir matris kitaplığı (eğitim amaçlı) oluşturmaya çalışıyorum ve bir engele ulaştığımdan emin değilim. grace ile nasıl yaklaşacağımı bilmiyorum. İki matris eklemek, her bir matrisin öğesinde ayrı ayrı get() yöntemini kullanarak basit bir görevdir.Soyut sınıf yöntemi - Çocuk sınıfı nesnesini somutlaştırmak için?
Ancak, kullandığım sözdizimi yanlış. NetBeans bir sınıf beklediğini iddia ediyor, ancak bir tür parametresi buldu; bana, bir tip parametresi, yalnızca sınıf kümesine 1: 1 eşlemeli bir kümedir.
Burada neden hatalıyım? Daha önce bir sınıftan başka bir şey türü olan bir parametre görmedim, bu yüzden aşağıdaki biraz M sınıfı bir sınıf olamamalı mı?
M Matrisi
public abstract class Matrix<T extends Number, M extends Matrix>
{
private int rows, cols;
public Matrix(int rows, int cols)
{
this.rows = rows;
this.cols = cols;
}
public M plus(Matrix other)
{
// Do some maths using get() on implicit and explicit arguments.
// Store result in a new matrix of the same type as the implicit argument,
// using set() on a new matrix.
M result = new M(2, 2); /* Example */
}
public abstract T get(int row, int col);
public abstract void set(int row, int col, T val);
}
Matrix sınıfında neden kendiliğinden uzanan bir tür var? –
@ cricket_007 Sebeplerim, plus() öğesinin Matrix'i genişleten bir nesneyi döndürmesidir. Şimdi yazdığımda gerçekten aptalca geliyor. Belki dönüş tipi sadece Matrix olmalıdır .. Ama sonra plus() işlevinin içindeki matrisi başlatamıyorum, değil mi? Soyut bir sınıf olarak. –
Tam türünü bilmediğiniz için bir tür parametresini doğrudan kullanamazsınız. – Andrew