重写子类中的抽象方法
Overriding the abstract methods in the subclass
我有两个类,ClassTest2有2个抽象方法和1个非抽象方法。
Class Test3调用了Test2的Cat(),实现了两个Test2抽象方法。
我的问题是,如果我不向 Test3 中的抽象方法添加任何主体,我是否重写了这些方法?我没有实现Dog()和Bird(),那为什么Test3可以编译运行?
谢谢
abstract public class Test2
{
abstract public void Dog();
abstract public void Bird();
public static void Cat()
{
System.out.println("Meow");
}
}
public class Test3 extends Test2
{
@Test
public void Play()
{
Cat();
}
@Override
public void Dog() {
// TODO Auto-generated method stub
}
@Override
public void Bird() {
// TODO Auto-generated method stub
}
}
您的抽象方法是无效的,因此 return 什么都没有,编译器期望该方法 return 什么都没有,并且通过添加大括号您已经定义了 body; body 只是空的。
这类似于当你实现一个接口时,编译器唯一关心的是你是否履行了契约。
我有两个类,ClassTest2有2个抽象方法和1个非抽象方法。
Class Test3调用了Test2的Cat(),实现了两个Test2抽象方法。 我的问题是,如果我不向 Test3 中的抽象方法添加任何主体,我是否重写了这些方法?我没有实现Dog()和Bird(),那为什么Test3可以编译运行?
谢谢
abstract public class Test2
{
abstract public void Dog();
abstract public void Bird();
public static void Cat()
{
System.out.println("Meow");
}
}
public class Test3 extends Test2
{
@Test
public void Play()
{
Cat();
}
@Override
public void Dog() {
// TODO Auto-generated method stub
}
@Override
public void Bird() {
// TODO Auto-generated method stub
}
}
您的抽象方法是无效的,因此 return 什么都没有,编译器期望该方法 return 什么都没有,并且通过添加大括号您已经定义了 body; body 只是空的。
这类似于当你实现一个接口时,编译器唯一关心的是你是否履行了契约。