【问题标题】:Incompatible types: Object cannot be converted to another Object?不兼容的类型:对象不能转换为另一个对象?
【发布时间】:2015-11-19 18:01:54
【问题描述】:

我现在正在尝试找出可能导致此问题的原因一段时间。我对 Java 和 BlueJ 完全陌生,但已经研究了好几个小时,无法弄清楚是什么导致了问题。不断收到错误消息“不兼容的类型:无法将 Plasterer 转换为 Apprentice”。非常感谢任何帮助。

//程序目的:创建一个混合数组来容纳2个不同的学徒对象-石膏工和木匠 //泥水匠和木匠 //然后将每个对象的所有详细信息显示到屏幕上。

public class MixedLists
{

  public static void main(String args[])
  {

    //Declaration of object list to hold 2 student objects
    Apprentice [] apprenticeList = new Apprentice[2];

    ////////////////////////////////////////////////////////////////////
    //Plasterer
    //Taking in values
    String NameIn, NumberIn, AddressIn, StudentIDIn, EmployerNameIn, FinalSem1GradeIn;

    System.out.println("Entering data for Plasterer");
    //Apprentice class attributes
    System.out.print("\tEnter Name:                   ");
    NameIn = EasyScanner.nextString();

    System.out.print("\tEnter telephone number:       ");
    NumberIn = EasyScanner.nextString();

    System.out.print("\tEnter Address:                ");
    AddressIn = EasyScanner.nextString();

    System.out.print("\tEnter student id:             ");
    StudentIDIn = EasyScanner.nextString();      

    //Plasterer class attributes
    System.out.print("\tEnter in Employer Name:         ");
    EmployerNameIn = EasyScanner.nextString();

    System.out.print("\tEnter Final Semester 1 Grade:    ");
    FinalSem1GradeIn = EasyScanner.nextString();

    //Initializing what is referenced by position 0 of the object list with a plasterer object
    apprenticeList[0]=new Plasterer(NameIn, NumberIn, AddressIn, StudentIDIn, EmployerNameIn, FinalSem1GradeIn);

    System.out.println("\n");

    /////////////////////////////////////////////////////////////////   
    //Carpenter
    String NameIn1,AddressIn1,Number1,StudentID1;
    //additional variables
    String awardSought,specialisation;
    double gpaModuleGrade, industrialExperienceMark;

    //Entering values for Carpenter
    System.out.println("Entering data for Carpenter");
    //Apprentice class attributes
    System.out.print("\tEnter Name:                   ");
    NameIn1 = EasyScanner.nextString();

    System.out.print("\tEnter telephone number:       ");
    Number1 = EasyScanner.nextString();

    System.out.print("\tEnter Address:                ");
    AddressIn1= EasyScanner.nextString();

    System.out.print("\tEnter student id:             ");
    StudentID1= EasyScanner.nextString();

    //Carpenter class attributes    
    System.out.print("\tEnter award sought:           ");
    awardSought = EasyScanner.nextString();
    System.out.print("\tEnter specialist area:        ");
    specialisation = EasyScanner.nextString();

    //Carpenter class attributes
    System.out.print("\tEnter GPA Module Grade:       ");
    gpaModuleGrade = EasyScanner.nextString();
    System.out.print("\tEnter industrial experience Grade: ");
    industrialExperienceMark = EasyScanner.nextString();

    //Initializing what is referenced by position 1 of the object list with a Carpenter object
    apprenticeList[1]=new Carpenter(NameIn1, AddressIn1, Number1, StudentID1,awardSought,specialisation, gpaModuleGrade,industrialExperienceMark);

    System.out.println("\n");

    ////////////////////////////////////////////////////////////////////
    //for loop to display out contents of mixed object array
    //Display out all information associated with Carpenter, Carpenter and CabinetMaker

    System.out.println("Award Details for all Apprentices in the System\n"); 
    for(int i = 0; i < apprenticeList.length; i++)
    {
        System.out.println(apprenticeList[i].printAwardDetails());
    }

  }
}

学徒班是这样的

public abstract class Apprentice
{
    //attributes

    private String Name;
    private String Number;
    private String Address;
    private String StudentID;

    public Apprentice (String NameIn, String NumberIn, String AddressIn, String StudentIDIn)
    {
        Name = NameIn;
        Number = NumberIn;
        Address = AddressIn;
        StudentID  = StudentIDIn;
    }

        //Methods to read the attributes

        public String getName()
        {
            return Name;
        }

        public String getNumber()
        {
            return Number;
        }

    public String getAddress()
    {
        return Address;
    }

    public String getStudentID ()
    {
        return StudentID ;
    }

    public void setName(String NameIn)
    {
        Name = NameIn;
    }

    public void setNumber(String NumberIn)
    {
        Number = NumberIn;
    }

    public void setAddress(String AddressIn)
    {
        Address = AddressIn;
    }

    public void setStudentID (String StudentIDIn )
    {
        StudentID  = StudentIDIn;
    }

}

【问题讨论】:

  • PlastererApprentice 的子类吗?
  • 请添加PlastererApprentice的定义
  • 您没有发布最重要的信息(如上要求)。
  • 对不起,如果我没有正确理解,但如果这是我认为您正在寻找的,我刚刚添加了上面的学徒课程。
  • 我需要 Plasterer 和 Carpenter 类来继承 Apprentice 类的属性,但我不知道具体该怎么做。

标签: java object types bluej incompatibility


【解决方案1】:

你需要使用继承。

创建一个名为“Worker”的类,然后 Plasterer 和 Apprentice 都应该继承该类。然后,您可以获得包含 Plasterers 和 Apprentice 的工人列表。

或者如果“学徒”只是一种Plasterer,则让Apprentice继承Plasterer(如果Plasterer是一种学徒,则相反)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2013-09-18
    • 2023-03-22
    相关资源
    最近更新 更多