gpt4 book ai didi

java - 通过接口(interface)的多态性

转载 作者:行者123 更新时间:2023-12-01 22:43:18 25 4
gpt4 key购买 nike

我只有一个界面

public interface AA {
public void sayHello();
}

并从一个类中实现它

public class B implements AA {

@Override
public void sayHello() {
System.out.println("Hello !");
}
}

一个类有一个参数类型为上述接口(interface)的方法

public class C {
public void invoke(AA aa) {
System.out.println("Invoking !");
}
}

在我的主类中将它们构造为

public class Main {
public static void main(String... args) {
B b = new B();
C c = new C();
c.invoke(b);
}
}

在我的控制台输出调用!

我不太了解多态性以防万一。为什么C类的invoke(AA aa)方法可以接受B类的实例?通过实现相同的接口(interface),所有类是否都相同?

举个例子:

我有 Student.javaTeacher.java 类。如果他们使用单一方法gotoSchool()实现一个接口(interface)。他们可以传递带有这两个类实现的接口(interface)的参数类型的任何方法吗?如果是这样,我可以假设 Student 类和 Teacher 类的实例是相同的吗?

请有人帮助我,我的想法有什么问题吗?我只知道当您扩展同一个类时,就会发生多态性。但我不知道如何实现接口(interface)

最佳答案

Why invoke(AA aa) method of class C can accept instance of class B ?

因为类B也实现了接口(interface)AA

Does all class are the same by implementing a same interface ?

是的。这就像拥有一个Animal界面。当您的类 Dog 实现 Animal Dog 现在 IS-A(n) Animal 。如果 Cat 实现 Animal,则 Cat 现在也 IS-A(n) Animal .

I just only know about polymorphism to extends same class. But I don't know using with Interfaces.

多态性不仅仅限于扩展类。当您实现接口(interface)时也会发生这种情况。

在您给定的带有 StudentTeacher 类的示例中。假设您有一个名为 SchoolGoer 的接口(interface),并且您的 StudentTeacher 实现了该接口(interface),现在您可以说 Student< 的每个实例Teacher IS-A SchoolGoer

您现在可以执行以下操作:

SchoolGoer aTeacher = new Teacher();
SchoolGoer aStudent = new Student();
aTeacher.goToSchool();
aStudent.goToSchool();

由于它们都实现了 SchoolGoer 接口(interface),因此它们都可以执行 SchoolGoer 所做的任何事情。在本例中goToSchool

关于java - 通过接口(interface)的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25778347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com