35-Java 多态
Java 多态在本教程中我们将通过示例学习多态不同类型的多态以及如何在Java中实现它们。多态是面向对象编程的重要概念。它只是意味着不止一种形式。也就是说同一实体方法运算符或对象在不同情况下的行为会有所不同。例如Java中的运算符用于执行两个特定功能。与数字整数和浮点数一起使用时将执行加法运算。int a 5; int b 6; int sum a b; // sum 11当我们将运算符与字符串一起使用时它将执行字符串连接。例如String firstName abc ; String lastName xyz; name firstName lastName; // name abc xyz多态性的类型在Java中多态可以分为两种类型运行时多态编译时多态运行时多态在Java中可以通过方法重写来实现运行时多态。假设在父类及其子类中创建了相同的方法。在这种情况下将要调用的方法取决于用于调用该方法的对象。例如示例1方法重写abstract class Animal { public abstract void makeSound(); } class Dog extends Animal { Override public void makeSound() { System.out.println(Bark bark..); } } class Cat extends Animal { Override public void makeSound() { System.out.println(Meow meow..); } } class Main { public static void main(String[] args) { Dog d1 new Dog(); d1.makeSound(); Cat c1 new Cat(); c1.makeSound(); } }输出Bark bark… Meow-meow...在上面的示例中该方法makeSound()在两个不同的类中具有不同的实现。当我们运行程序时表达式d1.makeSound()将调用Dog类的方法。这是因为d1是Dog类的对象。表达式c1.makeSound()将调用Cat类的方法。这是因为c1是Cat类的对象。在程序执行期间确定将要调用的方法。因此方法重写是运行时多态。编译时多态可以通过Java中的方法重载和运算符重载来实现编译时多态。方法重载在Java类中如果参数不同则可以使用相同的名称创建方法。例如void func() { ... } void func(int a) { ... } float func(double a) { ... } float func(int a, float b) { ... }这在Java中称为方法重载。让我们以方法重载为例。示例3方法重载class Demo { public void displayPattern(){ for(int i 0; i 10; i) { System.out.print(*); } } public void displayPattern(char symbol) { for(int i 0; i 10; i) { System.out.print(symbol); } } } class Main { public static void main(String[] args) { Demo d1 new Demo(); d1.displayPattern(); System.out.println(\n); d1.displayPattern(#); } }输出********** ##########在上面的程序中displayPattern()方法已重载。如果我们在不传递任何参数的情况下调用该方法则会创建 * 字符的图案。如果我们通过将字符作为参数传递来调用该方法则会创建 # 字符的图案。Java方法重载 VS 方法重写在方法重写的情况下方法应该在不同的类中。然而在方法重载的情况下方法应该在同一个类中。方法重写在运行时执行而方法重载在编译时执行。运算符重载Java中的某些运算符对不同的操作数的行为有所不同。例如运算符被重载以执行数字加法和字符串连接。、|和!为逻辑和按位操作重载。让我们看看运算符如何在Java中重载。Java中的运算符用于执行两个特定功能。与数字整数和浮点数一起使用时将执行加法运算。例如int a 5; int b 6; int sum a b; // sum 11当我们将运算符与字符串一起使用时它将执行字符串连接。例如String firstName abc ; String lastName xyz; name firstName lastName; // name abc xyz在像C 这样的语言中我们可以定义运算符以对不同的操作数进行不同的处理。但是Java不支持用户定义的运算符重载。为什么要多态多态允许我们创建一致的代码。例如假设我们需要绘制一个圆和一个正方形。为此我们可以创建一个Polygon类Circle和square从中继承两个子类。 在这种情况下有必要在这两个子类中创建一个具有相同名称render()的方法而不是创建具有不同名称的方法。在我们的方法重载示例中我们使用相同的方法名称displayPattern()来显示两个不同的图案以保持一致性。Java中的print()方法也是多态性(方法重载)的一个实例。同样的方法用于打印不同类型的值如char、int、String等。我们还可以使用相同的方法一次打印多个值。多态变量在Java中对象变量实例变量表示多态变量的行为。这是因为类的对象变量可以引用其类的对象及其子类的对象。例如class Animal { public void displayInfo() { System.out.println(I am an animal.); } } class Dog extends Animal { Override public void displayInfo() { System.out.println(I am a dog.); } } class Main { public static void main(String[] args) { //声明Animal类的对象变量a1 Animal a1; //创建Animal类的对象 a1 new Animal(); a1.displayInfo(); //dog类的对象创建 a1 new Dog(); a1.displayInfo(); } }输出I am an animal. I am a dog.在上面的示例中我们创建了Animal类的对象变量a1。在这里a1是一个多态变量。这是因为在语句中 a1 new Animal()a1引用Animal类的对象。在语句中 a1 new Dog()a1引用Dog类的对象。这是Java中的向上转型示例。 福利时间如果你正在备战面试或者想要学习其他知识给大家推荐一个宝藏知识库作者整理了一些列 Java 程序员需要掌握的核心知识有需要的自取不谢。知识库地址https://farerboy.com/
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2582854.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!