2016-04-07 15 views
-2

Hem çalışan hem de yöneticileri olan küçük ölçekli bir sistem yapıyorum, yönetici tüm çalışan özelliklerini miras alıyor çünkü aynı zamanda bir çalışan ama sistem içinde daha yüksek erişime sahip. Bunun en hesaplamaları tutan benim ana depo sınıfına beni getiren bir depo aldıktan sonra ben netlik için küçültülmüş olan bir sistem sınıfını,Java'da, üst sınıfı içe aktarabilirimken neden bir alt sınıfı başka bir sınıfa içe aktaramayacağım?

import java.text.ParseException; 
import java.util.ArrayList; 
import java.util.Scanner; 

public class system { 
    static Depot depot = new Depot("d1"); 
    //static Depot depot2 = new Depot("d2"); 
    //static Depot depot3 = new Depot("d3"); 

    static ArrayList<Depot> depotArray = new ArrayList<Depot>(); 

    public static void systemSetup() { 
     depotArray.add(depot); 
    } 

    public static void main(String[] args) throws ParseException { 
     StateThreadClass stateThreadClass = new StateThreadClass(); 
     Thread thread = new Thread(stateThreadClass); 
     thread.start();  
     systemSetup(); 
     GetDepot(); 
    } 
    } 

var.

import java.io.IOException; 
import java.sql.Date; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.InputMismatchException; 
import java.util.Iterator; 
import java.util.Scanner; 

//import Driver.Manager; 

public class Depot{  
    String name; 
    int LOCount = 0; 
    int counter = 0; 
    @SuppressWarnings("deprecation") 
    Long date3 = 1478217600000L; 
    Date date1 = new Date(1478217600000L); 
    Date date2 = new Date(1479217600000L); 
    Worker worker = new Worker ("tom", "tom", false); 
    Worker worker = new Worker ("phil2", "phil2", false); 
    Worker worker = new Worker ("phil", "phil", true); 
    -----> Manager manager = new Manager("ben", "ben", true); 
    etc..... 
} 

hiç sorun Worker örneğini ve sistem içindeki kullanmak ama Yöneticisi örneğini denediğimde "Yöneticisi türüne çözülemeyen" diyerek bir hata alabilir, ben seçeneği verilen am içe aktarılıyor. Ben başka bir hata olsun yaptığınızda

Herhangi bir yardım mutluluk duyacağız
import java.io.IOException; 

public class Worker {  
private String username; 
private String password; 
private boolean available; 

public Worker(String username, String password, boolean av) { 
    this.username = username; 
    this.password = password; 
    this.available = av; 
} 

public Boolean CheckPassword(String password) {   
    return this.password.equals(password); 
} 

public Boolean CheckUsername(String username) {   
    return this.username.equals(username); 
}    

public class Manager extends Worker {   
    public Manager(String username, String password, boolean av) { 
     super(username, password,av); 
    } 
} 

, ben olmamalı biliyorum

Bu benim İşçi ve Yönetici sınıf eksi gereksiz koddur "ithal İşçi çözülemeyen" Statik kullanıyorum ama başka bir günle ilgileneceğim! nezle

+1

"Genel sınıf Yöneticisi, Çalışanı genişletir" anlamına gelir ve "Sürücü" – S4beR

+1

uzatmak anlamına gelmez, gereksiz kodu dışarıda bırakmak, ama bıraktığınız kod hala mantıklı olması gerektiği anlamına gelir. 'Yönetici', 'İşçi'nin bir iç sınıfı mıydı yoksa' İşçi 'sınıfının dibini mi bıraktın? – khelwood

+1

Yönetici sınıfının işçi dahilinde olmasının herhangi bir nedeni var mı? –

cevap

0

Yönetici sınıfınızın kendi dosyasında ayrı ayrı tanımlandığından emin olun. İşçi sınıfının iç sınıfı olarak tanımlandığı için, o zaman şu anda İşçi sınıfınızın dışında erişilemez.

Bu düzeltmeyi tamamladıktan sonra, aynı sınıfta olmaları koşuluyla, Depo sınıfınızdan Yönetici sınıfınıza başvurabilmeniz gerekir. Değillerse, yalnızca yönetici sınıfınız için içe aktarma işlemini dahil edin ve Yönetici sınıfınıza erişebileceksiniz.

İç sınıflar hakkında bazı bilgiler: http://www.javaworld.com/article/2077411/core-java/inner-classes.html.

İlgili konular