java - 是否可以在 Java 中声明一个类或另一个类的对象?

标签 java inheritance

这里是新手。我的部分任务是询问用户他们的来电属于两个类别中的哪一个。

类 CategoryA 和类 CategoryB 都继承 self 们在之前的作业中创建的类 PhoneCall。

我想这样做:

    String choice = null;
    System.out.printf("Please enter a 'A' for Category A%n");
    System.out.printf("Please enter a 'B' for Category B%n");

    //[Input validation/exception handling stuff goes here]

    switch(choice){
        case "A":
            CategoryA objectName = new CategoryA();
            break;
        case "B":
            CategoryB objectName = new CategoryB();
            break;
    }

但这当然行不通,因为

  1. 我在 switch 语句中声明了 objectName,所以我不能在它之外使用它。
  2. 这两个对象具有相同的名称(即使只声明其中一个对象)。

程序的其余部分使用 objectName。如果我必须有两个不同的对象名称,那么每次我都会使用 objectName 时,我必须有一个 if/else 语句或 switch 语句,对吗?我什至无法将对象传递给函数,因为它属于一个类或另一个类。我在这里缺少一些解决方案吗?

最佳答案

是的,编程到通用的 PhoneCall 接口(interface)

PhoneCall phoneCall = null;
switch(choice){
    case "A":
        phoneCall = new CategoryA();
        break;
    case "B":
        phoneCall = new CategoryB();
        break;
}
if (phoneCall != null) {
    // ...
}

但是,我认为使用简单的 if-else if 会更容易阅读上面的内容

PhoneCall phoneCall = null;
if ("A".equals(choice)) {
    phoneCall = new CategoryA();
} else if ("B".equals(choice)) {
    phoneCall = new CategoryB();
}

关于java - 是否可以在 Java 中声明一个类或另一个类的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39810223/

相关文章:

java - 如何在 Android 中将 Firebase 子节点从一个节点移动到另一个节点?

java - 每秒 100 万次远程函数调用

python - 解决模板 block 结构与第三方 django 应用程序的冲突

oop - 如何从另一个 SystemC 类派生一个 SystemC 类?

Java 语言环境到字符串

java - tomcat 上的 Vaadin Web 应用程序仅为所有用户创建一个 webapp 实例

java - 可以在 JDBC/MySQL 中检索更新的行吗?

javascript - 是否可以从继承的工厂方法一般实例化 JS 类类型?

javascript - 在 TypeScript 中扩展基本类型,错误 : "_this is not defined..."

c++ - 在派生类中声明为 Virtual 的函数不执行,而是给出编译错误,为什么?