Java教程

Java中的抽象和严重多态

本文主要是介绍Java中的抽象和严重多态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java 中的多态性是对象采取多种形式的能力。简单地说,java 中的多态性允许我们以多种不同的方式执行相同的操作。所以在我们进入多态之前,让我们先看看java中的抽象类。

某些课程不应启动。

在设计类继承结构时,必须决定哪些类是抽象的,哪些是具体的。具体类是那些足够具体以启动的类。一个具体的类只是意味着可以创建该类型的对象。

到m一磕一类的抽象类,你需要把抽象的关键字类声明之前。

抽象类犬扩展动物 {  public void roam() { }  }

Compiler 不会让您实例化抽象类。

抽象类意味着您不能创建该类的新实例。出于多态的目的,您仍然可以将该抽象类用作声明的引用类型,但您不必担心有人会创建该类型的对象。

一个例子来自 Head First Java — Kathy Sierra

所以如果我们编译这个类使用,

javac MakeCanine.java

这将导致一个错误,其中提到了Canine 是抽象的,无法实例化

抽象类在生命中几乎没有任何用途、价值和目的,除非它被扩展。

抽象类与具体类

java中抽象类和具体类有很大的区别。让我们快速浏览一下。

  1. 修饰符:使用抽象修饰符声明抽象类。不应使用抽象关键字声明具体类,否则它也将成为抽象类。
  2. 实例化:抽象类不能直接实例化,即不能直接使用 new 关键字创建该类的对象。抽象类可以通过具体子类或通过定义所有抽象方法以及 new 语句来实例化。
抽象类AbstractClass { 抽象无效displayMessage();  }  public class JavaApplication {  public static void main(String[] args)   {   AbstractClass AC = new AbstractClass() {  void displayMessage()   {   System. out .println( "在抽象类中调用displayMessage" );   }   };   AC.displayMessage();   系统。out .println( "这是消息" );   }  } 

在这里,抽象类由一个具体的子类启动,这允许调用该类中的方法。

所以下面总结了抽象类和具体类的区别。

图片来自https://www.geeksforgeeks.org/

抽象方法

抽象类意味着必须扩展该类,抽象方法意味着必须覆盖该方法。您可能认为抽象类中的某些行为没有任何意义,除非它们在抽象类中实现,否则没有任何意义,除非它们由更具体的子类实现。

抽象方法没有人!

在抽象方法中,不能有方法体,您需要覆盖该方法才能拥有方法体。

公共抽象无效计算();

您不能在非抽象类中使用抽象方法,因为您也需要将该类声明为抽象类。

多态在行动。

java中有两种类型的多态性,即编译时多态性和运行时多态性。我们可以通过重载和覆盖方法在 java 中执行多态。因此,任何通过一个以上 IS-A 测试的 Java 对象都将是多态的,并且所有 Java 对象都是多态的,因为它们已经通过了它们自己的类型以及类 Object 的 IS-A 测试。

多态性意味着多种形式。

java中有两种多态,即运行时多态和编译时多态。我们可以通过方法重载和方法覆盖在java中实现多态。

那么让我们先来看看编译时多态性。

编译时多态

这也称为静态多态性。这可以通过java重载来实现。下面是一个编译时多态的简单例子。

类计算器 {  int乘法(int a,int b)  {  return a*b;   }  int 乘法( int a, int b, int c)   {  return a*b*c;   }  }  public class DemoApp  {  public static void main(String args[])   {   Calculator obj = new Calculator();   系统。out .println(obj.multiply(10, 20));   系统。出去.println(obj.multiply(10, 20, 30));   }  }

所以这里有两个相同方法的定义 multiply() 调用哪个乘法方法是由编译时的参数列表决定的。

运行时多态性

这也称为动态多态性,因为这是一个在运行时解析对重写方法的调用的过程。所以让我们在这里有一个运行时多态的真实例子。

Employee 类是父类,Manager 类是子类。子类覆盖父类的方法calculateSalary()。在这个例子中,我们将一个子类对象分配给父类引用,因此,为了确定将调用哪个方法,将在运行时确定对象的类型。

class Employee{  public void calculateSalary(){   System. out .println( "工资计算-重写方法" );   }  }公共类经理扩展员工{  public void calculateSalary(){   System. out .println( "工资计算-重写方法" );   }  public static void main(String args[]){   Employee obj = new Manager();   obj.calculateSalary();   }  }

当通过父类的引用调用被覆盖的方法时,对象的类型决定了在运行时 JVM 中要执行的方法。所以决定是在运行时做出的,这就是调用运行时多态性的原因。

面向新手的应用程序开发和编码技巧

所以这就是java中的多态性。希望您了解什么是多态以及何时使用多态。我们下个教程见。谢谢 !

这篇关于Java中的抽象和严重多态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!