如何让 类 实现接口并根据 Java 中的给定参数打印其方法?
How can I make classes implement an interface and print their methods based on a given parameter in Java?
我认为这可能是一个非常基本的 Java 问题,我很抱歉,因为我是初学者,但我想了解我在这里犯了什么错误:我应该创建一个包,在其中,我必须创建以下内容:
- 带有方法的接口(问题除此之外什么也没说,所以我创建它是空的)
- 2 classes,A 和 B,它们必须实现在所述接口中创建的方法并打印它们自己的名称
- 第三个 class,C,它必须覆盖 B 的实现
- 以及主程序中的 Execute 方法 class。该方法必须接收一个字母作为参数,无论是否为大写,并执行对应的class的方法(即如果该方法接收字母A作为参数,则必须执行所属的方法至 class A)
到目前为止我想出了这个,但是代码接收了输入,但什么也没做:
界面
public interface Test {
public static void testInterface() {
}
}
类
public class Teste {
public static void main(String[] args) {
class A implements Test {
public void testInterface() {
System.out.println("A");
}
}
class B implements Test {
public void testInterface() {
System.out.println("B");
}
}
class C extends B {
public void testInterface() {
System.out.println("C");
}
}
Scanner inputLetter = new Scanner(System.in); // Create a Scanner object
System.out.println("Enter a letter from A to C: ");
String resLetter = inputLetter.nextLine(); // Read user input
if (resLetter == "A") {
A a = new A();
a.testInterface();
}
if (resLetra == "B") {
B b = new B();
b.testInterface();
}
if (resLetra == "C") {
C c = new C();
c.testInterface();
}
}
}
老实说,我可能也弄乱了代码的结构,因为我不太确定应该如何组织它 - 我没有创建 Execute 方法,因为我遇到了很多麻烦在没有 main 方法的情况下创建 classes,并且无法将一个方法放入另一个方法中,我希望在我尝试更大胆的事情之前尽可能简单地使其工作,所以任何帮助都会非常有用值!
你做得很好。我将 post 一些信息来帮助您克服当前的障碍。
public interface MyTestInterface {
void testInterface();
}
接口只会“宣布”一个方法。这只是告诉您(和编译器)任何实现 MyTestInterface
的 Class 都必须提供一个名为 testInterface()
的方法。不要让它们成为静态的,因为这会阻止任何 class 实现接口覆盖方法。
将您的 classes 放入他们自己的 .java
文件中。虽然您可以在 class 中定义 class(所谓的内部 Class),但它有一些含义。
A.java
public class A implements MyTestInterface {
@Override
public void testInterface() {
// Objects of Class A do something here
}
}
MyMain.java
public class MyMain {
public static void main(String[] args) {
MyTestInterface implementedByA = new A();
implementedByA.testInterface();
}
}
由于它实现了MyTestInterface
,Class A 的对象既是A
的实例又是MyTestInterface
的实例。这允许您声明一个 MyTestInterface
类型的变量并为其分配一个实现 class.
的实现
正如@Amongalen 提到的:How do I compare strings in Java?
我认为这可能是一个非常基本的 Java 问题,我很抱歉,因为我是初学者,但我想了解我在这里犯了什么错误:我应该创建一个包,在其中,我必须创建以下内容:
- 带有方法的接口(问题除此之外什么也没说,所以我创建它是空的)
- 2 classes,A 和 B,它们必须实现在所述接口中创建的方法并打印它们自己的名称
- 第三个 class,C,它必须覆盖 B 的实现
- 以及主程序中的 Execute 方法 class。该方法必须接收一个字母作为参数,无论是否为大写,并执行对应的class的方法(即如果该方法接收字母A作为参数,则必须执行所属的方法至 class A)
到目前为止我想出了这个,但是代码接收了输入,但什么也没做:
界面
public interface Test {
public static void testInterface() {
}
}
类
public class Teste {
public static void main(String[] args) {
class A implements Test {
public void testInterface() {
System.out.println("A");
}
}
class B implements Test {
public void testInterface() {
System.out.println("B");
}
}
class C extends B {
public void testInterface() {
System.out.println("C");
}
}
Scanner inputLetter = new Scanner(System.in); // Create a Scanner object
System.out.println("Enter a letter from A to C: ");
String resLetter = inputLetter.nextLine(); // Read user input
if (resLetter == "A") {
A a = new A();
a.testInterface();
}
if (resLetra == "B") {
B b = new B();
b.testInterface();
}
if (resLetra == "C") {
C c = new C();
c.testInterface();
}
}
}
老实说,我可能也弄乱了代码的结构,因为我不太确定应该如何组织它 - 我没有创建 Execute 方法,因为我遇到了很多麻烦在没有 main 方法的情况下创建 classes,并且无法将一个方法放入另一个方法中,我希望在我尝试更大胆的事情之前尽可能简单地使其工作,所以任何帮助都会非常有用值!
你做得很好。我将 post 一些信息来帮助您克服当前的障碍。
public interface MyTestInterface {
void testInterface();
}
接口只会“宣布”一个方法。这只是告诉您(和编译器)任何实现 MyTestInterface
的 Class 都必须提供一个名为 testInterface()
的方法。不要让它们成为静态的,因为这会阻止任何 class 实现接口覆盖方法。
将您的 classes 放入他们自己的 .java
文件中。虽然您可以在 class 中定义 class(所谓的内部 Class),但它有一些含义。
A.java
public class A implements MyTestInterface {
@Override
public void testInterface() {
// Objects of Class A do something here
}
}
MyMain.java
public class MyMain {
public static void main(String[] args) {
MyTestInterface implementedByA = new A();
implementedByA.testInterface();
}
}
由于它实现了MyTestInterface
,Class A 的对象既是A
的实例又是MyTestInterface
的实例。这允许您声明一个 MyTestInterface
类型的变量并为其分配一个实现 class.
正如@Amongalen 提到的:How do I compare strings in Java?