java - 我怎么知道使用构造函数解决
问题描述
使用两种不同的方式修改以下类以打印“我的应用程序”:
- 使用构造函数。
- 使用方法覆盖。
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());
}
}
解决方案
构造函数不能返回值。所以只需在类中添加一个构造函数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);
}
}
推荐阅读
- mysql - 如何在 MYSQL 的 INSERT 中选择 MAX() 以自动增加 customerNumber
- capybara - Capybara ingore 在指定断言的“范围内”
- javascript - WDIO - 本地和远程机器中的 isDisplayed() 方法差异
- android - 应用程序未部署在 Google Play 控制台中
- angular - Angular 10 Fullcalendar - 如何编辑事件标题、内容以及如何删除事件?
- python - 使用 Python SDK 创建 Azure 容器时出现“HTTP 标头格式不正确”错误
- google-sheets - 如何通过在谷歌表格/excel中使用每天的开始时间和小时数来找到完成时间?
- javascript - 将导航 html 代码移动到单独的文件,javascript 现在不起作用
- meson-build - Meson:如何运行依赖于外部进程的测试?
- wpf - 拖放:按下 CTRL 时如何显示“移动”光标?