首页 > 解决方案 > 我怎么知道使用构造函数解决

问题描述

使用两种不同的方式修改以下类以打印“我的应用程序”:
- 使用构造函数。
- 使用方法覆盖。

abstract class Application{
    public abstract String getName();
}

class DefaultApplication extends Application
{
    public static final String NAME = "defapp";

    @Override
    public String getName()
    {
        return NAME;
    }
}

class MyApp extends DefaultApplication
{
    public static final String NAME = "myapp";
}

public class Applicationtest
{
    public static void main(String[] args)
    {
        Application myApp = new MyApp();
        System.out.println(myApp.getName());
    }
}

标签: javaarraysinheritance

解决方案


构造函数不能返回值。所以只需在类中添加一个构造函数MyApp

abstract class Application {
    protected Application() {
        System.out.println("default Constructor");
    }
    //constructer only can be called by child class using super keyword
    protected  Application(String appName) {
        System.out.println(appName);
    }
    public abstract String getName();
}

class DefaultApplication extends Application {
    public static final String NAME = "defapp";

    public DefaultApplication() {
        super("abstract contructor : " + NAME);
        System.out.println(NAME);
    }

    @Override
    public String getName() {
        return NAME;
    }
}

class MyApp extends DefaultApplication {
    public static final String NAME = "myapp";

    public MyApp() {
        System.out.println(NAME);
    }
}

推荐阅读