从超类调用方法 [英] Calling a method from a superclass

查看:88
本文介绍了从超类调用方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨.我试图通过子类从超类调用方法,但始终出现错误. 我尝试调用的方法是setDestination(),但是编译器不断向我显示错误找不到符号-方法setDestination(java.lang.string)",我的讲师说这是该方法的参数的简单错配调用和方法,但是我都具有String类型的两个方法参数,所以我有些困惑.

Hi. I am trying to call a method from a superclass via a subclass but keep getting an error. The method I am trying to call is setDestination() however the compiler keeps giving me the error "cannot find symbol - method setDestination(java.lang.string)" my lecturer says that this is a simple miss match of the parameters of the method call and the method, but I have both method parameters as of type String so I am a little confused.

我的代码是:

超豪华车:

     public class Vehicle
     {
     // A unique ID for this vehicle
     private String id; 
     // The next destination of this Vehicle.
     private String destination;

     /**
     * Constructor for objects of class Vehicle
     */
     public Vehicle(String id)
     {
         destination = null;
     }

     /**
     * Return the ID of the Vehicle.
     * @return The ID of the Vehicle.
     */
     public String getID()
     {
        return id;
     }

     /**
     * Return the destination of the Vehicle.
     * @return The destination of the Vehicle.
     */
     public String getDestination()
     {
         return destination;
     }

     /**
     * Set the intented destination of the Vehicle.
     * @param destination The intended destination.
     */
     private void setDestination(String destination)
     {
         this.destination = destination;
     }
}

子类Taxi:

public class Taxi extends Vehicle
{
    // The location of this taxi.
    private String location;
    // Whether it is free or not.
    private boolean free;

   /** 
    * Constructor for objects of class Taxi.
    * @param base The name of the company's base.
    * @param id This taxi's unique id.
    */
    public Taxi(String base, String id)
    {
         super(id);
         location = base;
         free = true;
    }

   /**
    * Book this taxi to the given destination.
    * The status of the taxi will no longer be free.
    * @param destination The taxi's destination.
    */
    public void book(String destination)
    {
        setDestination(destination);
        free = false;
    }

   /**
    * Return the status of this taxi.
    * @return The status.
    */
    public String getStatus()
    {   
        return getID() + " at " + location + " headed for " +
        destination;
    }

    /**
     * Return the location of the taxi.
     * @return The location of the taxi.
     */
     public String getLocation()
     {
         return location;
     }

     /**
     * Indicate that this taxi has arrived at its destination.
     * As a result, it will be free.
     */
     public void arrived()
     {
         location = destination;
         destination = null;
         free = true;
     }
 }

非常感谢您的帮助.

推荐答案

这是private方法.您不能访问私有方法.将其更改为受保护.

It's a private method. You cannot access private methods. Change it to protected.

您只能在班级中访问私人成员.

You can access private members with in the class only.

   Modifier Class   Package Subclass    World
    ---------------------------------------------
    public      Y      Y        Y           Y
    protected   Y      Y        Y           N
    no modifier Y      Y        N           N
    private     Y      N        N           N

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

这篇关于从超类调用方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆