试图从子类调用变量

时间:2014-05-06 18:43:24

标签: java inheritance composition

我想要做的是致电port.getferry.getname();但是当我尝试编译它的节目时我

  

"找不到符号k = port.getferry.getname();

     

symbol:variable getferry

     

location:class Port"

我只是不知道该怎么做我尝试将变量从私有更改为受保护或公共但没有任何改变这是我的程序的一小部分所以我不给你一个复杂的程序,

class tp{

    public static void main(String args[]){
        Port[] port=new Port[1];
        String k,limenas;
        Ferry[] ferry=new Ferry[1];
        String name=UserInput.getString();
        ferry[1]=new Ferry(name);
        port[1]=new Port(limenas,ferry[1]);
        k=port[1].getferry.getname();
  }

}

class Port{
    private String limenas;
    public Ferry ferry;
    Port(String li,Ferry ferry){
        limenas=li;
        this.ferry=ferry;
    }
    public String getlimenas(){
        return limenas;
    }
    public Ferry getferry(){
        return ferry;
    }
}

class Ferry extends Vessel{
    Ferry(String name){
        super(name);
    }
}

class Vessel{
    private String name;
    Vessel(String n){
         name=n;
    }
    public String getname(){
         return name;
    }
}

2 个答案:

答案 0 :(得分:2)

问题是你试图调用没有括号的方法。

port.getferry();  //will return a ferry object.  

ferry.getname();  //will return the name of the ferry object.

要链接它们,你应该尝试:

port.getferry().getname();  

这将返回一个渡轮对象并从中获取名称,返回一个字符串。

如果您有一组端口对象,也可以调用

port[1].getferry().getname() 

如上所述,它将在数组引用1的端口获得渡轮,前提是端口是端口数组的名称。

答案 1 :(得分:0)

最终,您将遇到阵列问题。

Java数组从0开始

Port [] port = new Port [1]; //长度为1的数组

k = port [1] ...会得到一个ArrayIndexOutOfBounds异常

端口[0]有效,端口[1]不有效。