作为一种面向对象的编程语言,java 支持继承、多态、向上转型等特性。因此,Java 中的 OOP 处理的是对象、类和函数。虚函数是Java中促进运行时多态性的成员函数之一。在这篇文章中,我们将讨论Java中的虚函数。
定义:虚函数不是任何特殊函数,而是一个促进方法重写机制的成员函数。这意味着,在 OOP 中,父类的虚函数是可以被具有相同类型但具有不同功能的子类覆盖的函数。
广告 该类别中的热门课程 JAVA 掌握 - 专业化 | 78 课程系列 | 15 次模拟测试开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
语法:对于Java中的虚函数,您应该遵循带有注释的java基本语法。为了实现虚函数的重写机制,这里可以使用@Override注解来专门指出我们要重写哪个虚函数,尽管这不是强制性的。
现在让我们看看虚函数是如何工作的。当我们通过其父类型引用调用子类的重写方法时,对象的类型或引用指示将调用哪个方法。该决定的结论发生在编译后的运行时期间。因此,虚函数的功能被继承的相同类型的子类覆盖。
有关虚拟功能的一些要点:
我们将在这里讨论一些虚函数的代码示例。
在此示例中,我们将展示虚拟函数 showMe() 如何根据与其关联的对象引用显示不同的文本。当它与“Head”类型关联时,它显示来自父类的消息。当它与“从属”类型关联时,它显示来自子类的消息。
代码:
class Head { public void showMe() { System.out.println("I am Head"); } } class Subordinate extends Head { @Override public void showMe() { System.out.println("I am Subordinate "); } } public class VirtualFuntionDemo { public static void main(String args[]) { Head superObject = new Head(); superObject.showMe(); //method of super class or parent class is called Head subObject = new Subordinate(); // upcasting subObject.showMe();//method of sub class or child class is called by Parent reference, this is called "Virtual function" Subordinate subObject2 = new Subordinate(); subObject2.showMe(); //method of sub class or child class is called } }
输出:
让我们以多级继承情况下的虚函数为例。在此示例中,我们考虑了两个继承级别。在此示例中,我们将展示虚拟函数 Administration() 如何根据与其关联的对象类型显示不同的消息。当它与“State”类型关联时,它显示来自父类的消息。当它与“District”类型关联时,它显示来自其子类的消息。同样,在继承的第二级中,当与“Municipality”类型关联时,它显示来自其父级“District”类的子类的消息。
代码:
class State{ void administartion() { System.out.println("This is under state govt."); } } class District extends State{ void administartion(){ System.out.println("This is under District Magistrate"); } } class Municipality extends District{ void administartion(){ System.out.println("This is under Mayor "); } } public class VirtualFunctionDemo2 { public static void main(String args[]){ State superObject=new State (); State subObject=new District (); State sub2Object=new Municipality (); superObject. administartion (); subObject.administartion (); // run time polymorphism occurs in virtual function happening in first level of heritance sub2Object.administartion (); // run time polymorphism occurs in virtual function happening in 2nd level of heritance } }
输出:
让我们再举一个多级继承情况下运行时多态性的例子。在此示例中,我们考虑了三个继承级别。在此示例中,我们将展示虚拟函数 whoami() 如何根据与其关联的对象类型显示不同的功能。当它与“汽车”类型关联时,它显示来自父类的消息。当它与“SUV”类型关联时,它显示来自其子类的消息。同样,在第二级继承中,当与“MPV”类型关联时,它显示来自其父类“SUV”类的子类的消息。同样在第三级继承中,当与“Hatchback”类型关联时,它显示来自其父类“MPV”类的子类的消息。
代码:
class Cars{ void whoami() { System.out.println("This is Car"); } } class SUV extends Cars{ void whoami(){ System.out.println("This is SUV"); } } class MPV extends SUV{ void whoami(){ System.out.println("This is MPV"); } } class Hatchback extends MPV{ void whoami(){ System.out.println("This is hatchback"); } } public class VirtualFunctionDemo3 { public static void main(String args[]){ Cars superObject=new Cars(); Cars subObject=new SUV(); // object of child type : 1st level heritance Cars sub2Object=new MPV(); // object of child type : 2nd level heritance Cars sub3Object=new Hatchback(); // object of child type : 3rd level heritance superObject.whoami(); subObject.whoami(); //run time polymorphism occurs in virtual function happening in first level of heritance sub2Object.whoami(); //run time polymorphism occurs in virtual function happening in second level of heritance sub3Object.whoami(); //run time polymorphism occurs in virtual function happening in third level of heritance } }
输出:
我们对“Java 中的虚拟函数”主题的学习到此结束。在java编译器中自己编写上面示例中提到的代码并验证输出。如果你不会自己写代码,那么代码的学习是不完整的。
以上是Java中的虚函数的详细内容。更多信息请关注PHP中文网其他相关文章!