Java 接口与多态性
让我们通过讨论Java如何定义接口和多态性来开始这篇文章,稍后我们将通过编程示例深入探讨这些概念。多态性,正如名称所示,意味着对象具有根据上下文不同而采取不同形式的能力。接口是一种使用关键字’interface’定义的类类型,其只有方法体而没有任何实现。
Java中的接口实现多态性
在本节中,我们将指导如何使用接口实现多态性。但在此之前,了解这些概念是很重要的。
多态性
在多态性中,我们可以使用父类引用引用子类。因此,该对象具有多个形式:父类引用和子类引用。多态性的两个最流行的示例是方法重载,也称为静态多态性,以及覆盖,运行时多态性。
示例
在这个示例中,我们将展示Java中如何实现编译时多态性。我们将创建两个具有相同名称但不同签名的方法。子类的方法将重载父类的方法。方法重载被称为编译时多态性,因为编译器根据给定的参数在编译期间确定方法调用。
class Example1 { // parent class
public void method() {
System.out.println("Tutorialspoint");
}
}
// creating a child class
public class Example2 extends Example1 {
public void method(int id) { // method overloading
System.out.println("ID: " + id);
}
public static void main(String []args){
// object creation of the classes
Example1 exp1 = new Example1();
Example2 exp2 = new Example2();
// method calling
exp1.method();
exp2.method(125);
}
}
输出
Tutorialspoint
ID: 125
接口
在Java中,接口有两个目的,纯抽象和多继承。一般来说,一个接口由定义类可以实现的抽象方法和变量组成。除了抽象方法和变量之外,接口还可以包含默认方法、常量和静态方法。要创建一个接口,我们使用关键字”interface”,在类中访问它的成员时,需要使用”implements”关键字来定义类。
语法
interface nameOfInterface {
method1();
method2();
}
使用接口实现多态的Java程序
让我们首先讨论方法。
方法
- 第一步是创建一个只包含方法声明的接口。
-
然后,创建两个实现该接口并覆盖其方法以打印不同消息的类。
-
在main()方法中,定义一个接口的实例,并使用这个实例创建这两个类的实例。
-
现在,使用这些实例调用方法并退出。
示例
interface Message { // creating an interface
public void method(String name); // method declaration
}
// class implementing interface
class Example1 implements Message {
String name;
public void method(String name) {
System.out.println("Hello " + name);
}
}
// another class implementing interface
class Example2 implements Message {
String name;
public void method(String name) {
System.out.println("Hello " + name);
}
}
public class PolyExample {
public static void main(String []args){
// creating an instance of interface
Message msg;
// creating instances and assigning them to interface reference
msg = new Example1();
msg.method("Ram"); // method call
msg = new Example2();
msg.method("Shyam"); // method call
}
}
输出
Hello Ram
Hello Shyam
结论
我们通过定义多态性和接口的方式开始了这篇文章。在接下来的部分中,我们用示例程序详细解释了它们。同时,我们还介绍了方法重载和重写。最后,我们讨论了一个使用接口实现多态性的Java程序。