我有这两个班:
public class Superclass
{
public Superclass();
...
}
Run Code Online (Sandbox Code Playgroud)
和
public class ChildClass extends Superclass
{
public ChildClass();
public setname(String name)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
Superclass a;
a = new ChildClass();
a.setname("Roger");
Run Code Online (Sandbox Code Playgroud)
我收到此警告:方法setname(String)未定义类型Superclass.怎么解决?谢谢
当您通过Superclass类型的引用调用方法时,您只能使用Superclass API.Superclass API不包含该方法setname().
你可以通过声明超类中的方法来解决这个问题.在这个例子中,它被声明为抽象,因此超类不需要定义它.
public abstract class Superclass
{
public Superclass();
public abstract void setname(String name);
}
Run Code Online (Sandbox Code Playgroud)
或者您可以更改a子类的引用类型:
ChildClass a;
a = new ChildClass();
a.setname("Roger");
Run Code Online (Sandbox Code Playgroud)