Java中的多态性示例| Java多态性教程


Java中的多态性示例| Java多态性教程是今天的主题。多态性这个词来自两个希腊词poly,意思是多,而morph意味着形状或类型。因此,多态性可以定义为可以以不同/多种形式显示的单词。但是在Java的情况下,它是一个运算符或构造函数或方法,可以以多种形式显示。

内容概述

  • 1#编程中的多态性是什么
  • 2 Java中的多态性
  • 3 #Compile time polymorphism
  • 4 #Operator重载
  • 5 #Constructor重载
  • 6 #Method重载
  • 7 #Run time polymorphism
  • 8 #Upcasting
  • 9 #Method overriding
  • 10 #Java运行时与数据成员的多态性
  • 11具有多级继承的Java运行时多态性
  • 12#静态和动态多态之间的差异

#编程中的多态性是什么?

多态性是该方法基于其所作用的对象来执行不同事物的能力。换句话说,多态允许您定义一个接口并具有多个实现。

例如,你有一个手机用于通信,你选择的通信模式可以是电话,短信,图片信息,邮件等。所以,我们的主要目标是通用,即沟通,但他们的方法是不同的。这称为多态性。

Java中的多态性

多态性OOPs概念之一。继承允许我们从另一个类继承属性和方法。多态性使用这些方法执行不同的任务。多态性允许我们以不同的方式执行单一动作。

Java中主要有两种类型的多态:

  1. 编译时间多态性
  2. 运行时多态性

#Compile time polymorphism

在编译期间显示多态性的任何操作都称为编译时多态性。它也被称为静态多态性。运算符重载,构造函数重载和方法重载是编译时多态的示例。

#Operator重载

Java为重载操作符提供了可访问性。例如,我们可以使用'+'运算符来添加两个数字以及连接两个字符串。 '+'是java中用于运算符重载的唯一运算符。

#Constructor重载

当一个类有多个具有不同参数的构造函数时,它被称为构造函数重载。这表明多态性。请参阅以下程序。

class child {   child() {     System.out.println("Hi !");   }    child(String name) {     System.out.println("Name is " + name);   }    child(String name, int std) {     System.out.println("My name is " + name + "and I'm in class" + std);   }    public static void main(String args()) {     child ch = new child();     child ch1 = new child("Shouvik");     child ch2 = new child("Shouvik ", 10);   } }

请参阅以下输出。

Java中的多态性

#Method重载

方法重载意味着一个类具有多个具有相同名称但参数不同的方法。这种方法重载属于编译时多态。

请参阅以下程序。

class overload {   void show(String name) {     System.out.println(name);   }    void show(String name, int std) {     System.out.println(name + " " + std);   } }  class goal {   public static void main(String() args) {     overload ob = new overload();     ob.show("shouvik");     ob.show("shouvik", 10);   } }

请参阅以下输出。

Java中的方法重载

#Run time polymorphism

在运行时显示多态性的任何操作称为运行时多态。它也被称为动态多态性。方法覆盖是运行时多态性的最佳示例。

#Upcasting

如果Parent类的引用变量引用Child类的对象,则称为upcasting。

请参阅以下语法。

class A{}   class B extends A{} A a=new B();

对于upcasting,我们可以使用类类型的引用变量或接口类型。

interface I{}   class A{}   class B extends A implements I{}

现在,让我们定义关系。

B IS-A A B IS-A I B IS-A Object

#Method overriding

可以将java中的方法重写定义为已存在于超类中的子类或子类中的方法。

请参阅以下程序。

class car {   void run() {     System.out.println("car is running");   } }  class bike extends car {   void run() {     System.out.println("bike is running");   }    public static void main(String args()) {     bike ob = new bike();     ob.run();   } }

请参阅以下输出。

方法覆盖

#Java运行时与数据成员的多态性

重写方法,而不是数据成员,因此数据成员无法实现运行时多态性。

在下面给出的示例中,两个类都具有数据成员速度。我们通过Parent类的引用变量访问数据成员,该引用变量引用子类对象。由于我们正在访问未被覆盖的数据成员,因此它将始终访问Parent类的数据成员。

请参阅以下代码示例。

class Car {     int speed = 80; }  class GC extends Car {   int speed = 140;    public static void main(String args()) {     Car c = new GC();     System.out.println(c.speed);   } }

请参阅以下输出。

Java运行时与数据成员的多态性

具有多级继承的Java运行时多态性

让我们看一下具有多级继承的Runtime Polymorphism的简单示例。

class Doc {   void print() {     System.out.println("Printing");   } }  class PDF extends Doc {   void print() {     System.out.println("Printing PDF Docs");   } }  class Word extends Doc {   void print() {     System.out.println("Printing Word Docs");   }    public static void main(String args()) {     Doc d1, d2, d3;     d1 = new Doc();     d2 = new PDF();     d3 = new Word();     d1.print();     d2.print();     d3.print();   } }

请参阅以下输出。

具有多级继承的Java运行时多态性

#静态和动态多态之间的差异

静态多态性 动态多态性
它涉及方法重载。 它涉及一种覆盖方法。

错误(如果有)在编译时解决。由于我们的代码在编译期间没有执行,因此名称为static。

例如:

void mul (int x , int y); void mul (float x, double y); int mul (int x, int y); //compiler gives error.  

如果引用变量正在调用重写方法,则要调用的方法由对象确定,您的引用变量指向该对象。它只能在运行时决定代码处于执行状态,因此名称为dynamic。

例如:

//reference of parent pointing to child object  Engineer eng = new ITE(); // method of child called eng.createProduct(); 

最后,Java中的多态性示例| Java多态性教程结束了。

资讯来源:由0x资讯编译自APPDIVIDEND,版权归作者Ankit Lathiya所有,未经许可,不得转载
你可能还喜欢