从超类调用方法 [英] Calling a method from a superclass
问题描述
嗨.我试图通过子类从超类调用方法,但始终出现错误.
我尝试调用的方法是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屋!