在抽象类java中调用非抽象方法

Dil*_*lis 3 java

我有3节课.这似乎是基本问题.但我无法通过谷歌搜索找到答案.

public abstract class Test {

    void t1()
    {
        System.out.println("super");

    }

}
 public class concret extends Test{

    void t1()
    {
        System.out.println("child");

    }
    void t2()
    {
        System.out.println("child2");

    }

}

public class run {
    public static void main(String[] args) {
        Test t=new concret();

        t.t1();
    }

}
Run Code Online (Sandbox Code Playgroud)

如何调用抽象类t1方法?由于我无法从抽象类创建对象,如何在抽象类中调用t1?谢谢.

Jon*_*eet 9

要么你创造出一个具体的类没有覆盖的方法,或混凝土类内覆盖的方法,你可以调用super.t1().例如:

void t1()
{
    super.t1(); // First call the superclass implementation
    System.out.println("child");
}
Run Code Online (Sandbox Code Playgroud)

如果你只有一个覆盖方法的对象实例,你就不能从类的"外部"调用原始方法,因为这会破坏封装...覆盖的目的是替换原始方法的行为.