2016-03-25 12 views
-1

Bir dizi kullanarak bir sınıftaki bir traktör filosu yapmam istendi ve bir dizi nesne oluşturmaya çalışırken hata almaya devam ediyorum.Nesnelerin bir dizi yapmayla ilgili sorunlar

Diğer derslerde kodumun geri kalanı ve yanlış kodun geri kalanını yapmak için doğru yol muyum yoksa bir dizi nesne yapmak için doğru yolu kullanmıyorsam mı?

package testTractor; 
class TestFleet { 

    public static void main(String[] args) { 

     Tractor tractor = new Tractor(); 
     Loader loader = new Loader(); 
     Harvester harvester = new Harvester(); 

     Tractor[] fleet = new Tractor[3]; 

     fleet[0] = new tractor(); 

     fleet[1] = new loader(); 

     fleet[2] = new harvester(); 


} 

    } 
+2

Hangi hataları alıyorsunuz? Ayrıca, sınıflarınızın isminde bir ilk harf (olması gerektiği gibi) vardır, fakat siz küçük harfleri olan kurucuları çağırınız: yeni traktör(). – Berger

+1

Dizininizin tipi Traktördür, bu yüzden Traktörün içinde sadece (ve Traktör'den gelen diğer araç) – Whitefret

+0

olabilir. Ayrıca, bir sekmeye eklenecek sözdizimi sadece [x] = öğe, yeni aramak gerekmez x() – Whitefret

cevap

0

deneyin ile:

Tractor[] fleet = new Tractor[3]; 
fleet[0] = tractor; 
fleet[1] = loader; 
fleet[2] = harvester; 

P.S. Düzenlenen (kullanım Nesne [] Yükleyici ve Harvester Tractor uzatmak yoksa) Eğer dizi tanımlarken

+0

Tamam, okunaklı. Ama sonra ne ... nesneleriniz ne yapabilir? Daha iyi bir çözüm, bir sınıfı genişletmek veya bir arayüz uygulamaktır. – Bakudan

+0

@Bakudan Elbette ...Muhtemelen Traktörler, yükleyiciler ve biçerdöverler için bir BigGuys arayüzü yapacağım. Ancak, yayınlanan kodda, Yükleyicinin Traktör - ve Traktör'ün bir arabirim olmadığından emin olup olmadığı net değil. –

+0

Evet, ama bahse girerim daha fazla/daha iyi yapabilirdiniz :) Daha karmaşık bir şey önerebilirim, p - özet sınıfı Araç uygulama inteface'i. Bu şekilde, tüm ortak eylemleri garanti edeceksiniz ve sınıfınızın kullanıcısı için cömert olsanız bile, bir temel uygulama ekleyebilirsiniz. – Bakudan

1
  1. , bunu bir tür vermek: 3 elemanlardan oluşan bir dizi olacak

    Tractor[] fleet = new Tractor[3];

    Tractor türünde. Bu nedenle, Loader türünde eleman eklemeyi denediğinizde bir hata alırsınız. Sadece bir tip ekleyebilirsiniz (point 3).

  2. elemanları eklemeyi deneyin

    :

    fleet[0] = new tractor();

    Bu yanlış - kasa - Yok sınıfa, bir variblenin bakın bu şekilde. Bir değişkenden (en azından bunun gibi) anlatamazsınız. ancak kılıfı değiştirirseniz class Tractor sevk edecektir:

    fleet[0] = new Tractor();

  3. Temel OOP - sırayla tüm bu sana niyetinde varsayalım gibi bir sınıf Vehicle eklemek çalışmak. Araç uzanır Her sınıf, bir aracın olacak, bu yüzden güvenle diziye eklenebilir:

    class Vehicle{}

    ve diğer sınıfların hepsini uzatmak:

    public class Tractor extends Vehicle { ... }

Bu sayede 'Araba', 'Kamyon' ya da her ne olursa olsun daha 'araç' ekleyebilirsiniz ...

Sonunda:

Vehicle[] fleet = new Vehicle[3]; 
fleet[0] = new Tractor(); 
fleet[1] = new Loader(); 
fleet[2] = new Harvester();