- Virtual Function in JAVA
- Share this post
- Что такое виртуальная функция в Java?
- Что это такое?
- Пример
- С интерфейсами
- Чистая
- Полиморфизм
- Запомни
- What is virtual function java
- Learn Latest Tutorials
- Preparation
- Trending Technologies
- B.Tech / MCA
- Javatpoint Services
- Training For College Campus
- Virtual Function in Java
- Virtual Function in Java
- Virtual Functions in Java Bean
- Non-Virtual Functions in Java
- Virtual Functions in Java interface
- Related Article — Java Function
Virtual Function in JAVA
The programmers coming from c++ background to Java normally think that where is the Virtual function? In Java there is no keyword names “virtual“.
Definition of Virtual from wiki:
In object-oriented programming, a virtual function or virtual method is a function or method whose behaviour can be overridden within an inheriting class by a function with the same signature to provide the polymorphic behavior.
Therefore according to definition, every non-static method in JAVA is by default virtual method except final and private methods. The methods which cannot be inherited for polymorphic behavior is not a virtual method.
import java.util.*; public class Animal < public void eat() < System.out.println("I eat like a generic Animal."); >public static void main(String[] args) < Listanimals = new LinkedList(); animals.add(new Animal()); animals.add(new Wolf()); animals.add(new Fish()); animals.add(new Goldfish()); animals.add(new OtherAnimal()); for (Animal currentAnimal : animals) < currentAnimal.eat(); >> > public class Wolf extends Animal < @Override public void eat() < System.out.println("I eat like a wolf!"); >> public class Fish extends Animal < @Override public void eat() < System.out.println("I eat like a fish!"); >> public class Goldfish extends Fish < @Override public void eat() < System.out.println("I eat like a goldfish!"); >> public class OtherAnimal extends Animal <>
I eat like a generic Animal.
I eat like a wolf!
I eat like a fish!
I eat like a goldfish!
I eat like a generic Animal.
Abstract class is nothing but the pure virtual method equivalent to C++ in Java.
Question : why we say that static method is not a virtual method in Java?
Answer : static method is bound to the class itself, so calling the static method from class name or object does not provide the polymorphic behavior to the static method. We can override the static method however it will not give the advantage of the polymorphism.
Share this post
Что такое виртуальная функция в Java?
Java – это объектно-ориентированный язык программирования, который поддерживает такие понятия, как полиморфизм, наследование, абстракция и т. д. Эти концепции ООП вращаются вокруг классов, объектов и функций-членов. Виртуальная функция в Java – одна из таких концепций, которая помогает в полиморфизме во время выполнения.
Что это такое?
Поведение виртуальной функции может быть переопределено наследующей функцией класса с тем же именем. Она в основном определяется в базовом классе и переопределяется в унаследованном классе.
Ожидается, что виртуальная функция будет определена в производном классе. Мы можем вызвать виртуальную функцию, ссылаясь на объект производного класса, используя ссылку или указатель базового класса.
Каждый нестатический метод по умолчанию является виртуальным методом. В Java нет виртуального ключевого слова, такого как C ++, но мы можем определить его и использовать для таких понятий, как полиморфизм во время выполнения.
Пример
class Vehicle < void make()< System.out.println("heavy duty"); >> public class Trucks extends Vehicle < void make()< System.out.println("Transport vehicle for heavy duty"); >public static void main(String args[]) < Vehicle ob1 = new Trucks(); ob1.make(); >>
Output: Transport vehicle for heavy duty
Каждый нестатический метод является виртуальной функцией, кроме финальных и закрытых методов. Методы, которые нельзя использовать для полиморфизма, не рассматриваются как виртуальные функции.
Статическая функция не считается виртуальной функцией, потому что статический метод связан с самим классом. Поэтому мы не можем вызвать статический метод из имени объекта или класса для полиморфизма. Даже когда мы переопределяем статический метод, он не резонирует с концепцией полиморфизма.
С интерфейсами
Все интерфейсы Java являются виртуальными, они полагаются на реализующие классы для обеспечения реализации методов. Код для выполнения выбирается во время выполнения. Вот простой пример для лучшего понимания.
interface Car < void applyBrakes(); >interface Audi implements Car < void applyBrakes()< System.out.println("breaks Applied"); >>
Здесь applyBreaks() является виртуальным, потому что функции в интерфейсах предназначены для переопределения.
Чистая
Чистая виртуальная функция – это виртуальная функция, для которой у нас нет реализаций. Абстрактный метод можно рассматривать как чисто виртуальную функцию. Давайте рассмотрим пример, чтобы лучше это понять.
abstract class Dog < final void bark()< System.out.println("woof"); >abstract void jump(); //this is a pure virtual function > class MyDog extends Dog < void jump()< System.out.println("Jumps in the air"); >> public class Runner < public static void main(String args[])< Dog ob1 = new MyDog(); ob1.jump(); >>
Полиморфизм
Полиморфизм во время выполнения – это когда вызов переопределенного метода разрешается во время выполнения, а не во время компиляции. Переопределенный метод вызывается через ссылочную переменную базового класса.
class Edureka < public void show()< System.out.println("welcome to edureka"); >> class Course extends Edureka < public void show()< System.out.println("Java Certification Program"); >public static void main(String args[]) < Edureka ob1 = new Course(); ob1.show(); >>
Output: Java Certification Course
Запомни
- Для виртуальной функции в Java вам не нужно явное объявление. Это любая функция, которая у нас есть в базовом классе и переопределена в производном классе с тем же именем.
- Указатель базового класса может использоваться для ссылки на объект производного класса.
- Во время выполнения программы указатель базового класса используется для вызова функций производного класса.
What is virtual function java
Learn Latest Tutorials
Preparation
Trending Technologies
B.Tech / MCA
Javatpoint Services
JavaTpoint offers too many high quality services. Mail us on h[email protected], to get more information about given services.
- Website Designing
- Website Development
- Java Development
- PHP Development
- WordPress
- Graphic Designing
- Logo
- Digital Marketing
- On Page and Off Page SEO
- PPC
- Content Development
- Corporate Training
- Classroom and Online Training
- Data Entry
Training For College Campus
JavaTpoint offers college campus training on Core Java, Advance Java, .Net, Android, Hadoop, PHP, Web Technology and Python. Please mail your requirement at [email protected].
Duration: 1 week to 2 week
Like/Subscribe us for latest updates or newsletter
Virtual Function in Java
- Virtual Function in Java
- Virtual Functions in Java Bean
- Non-Virtual Functions in Java
- Virtual Functions in Java interface
This tutorial introduces what a virtual function/method is in Java and how to use the virtual function in Java.
A function that is defined in a base class and can be overridden in a derived class is known as a virtual function. The concept of virtual function was used in C++ and in Java by default; all the non-private and non-final methods are virtual methods.
In C++, we use a virtual keyword to make virtual functions, but Java has no such keyword. And besides that, all the non-private and non-final methods are virtual.
The concept of a virtual function is useful in terms of object-oriented programming concepts and polymorphism. Let’s understand by some examples.
Virtual Function in Java
In this example, we created a class Human that contains a virtual eat() method. Since it is a virtual method, it can be overridden in the derived/child class, as we did in the example below. Both methods have the same signature, and when we call the function, only the child class method executes. See the example below.
class Human void eat(String choice) System.out.println("I would like to eat - "+choice+ " now"); > > public class SimpleTesting extends Human void eat(String choice) System.out.println("I would like to eat - "+choice); > public static void main(String[] args) SimpleTesting simpleTesting = new SimpleTesting(); simpleTesting.eat("Pizza"); simpleTesting.eat("Chicken"); > >
I would like to eat - Pizza I would like to eat - Chicken
Virtual Functions in Java Bean
Getter functions of a bean/POJO class are also virtual and can be overridden by the child class. See the example below.
public class SimpleTesting extends Student public int getId() System.out.println("Id : "+id); return id; > public String getName() System.out.println("Name : "+name); return name; > public int getAge() System.out.println("Age : "+age); return age; > public static void main(String[] args) SimpleTesting student = new SimpleTesting(); student.setId(101); student.setName("Rohan"); student.setAge(50); student.getId(); student.getName(); student.getAge(); > > class Student int id; String name; int age; public int getId() return id; > public void setId(int id) this.id = id; > public String getName() return name; > public void setName(String name) this.name = name; > public int getAge() return age; > public void setAge(int age) this.age = age; > >
Id : 101 Name : Rohan Age : 50
Non-Virtual Functions in Java
Functions that are either private or final are non-virtual, so they cannot be overridden by the child class. In this example, we created two functions, one is final, and the second is private. We tried to override these into child class, but the java compiler raised an error due to the non-virtual function. See the example and output below.
class Human // non-virtual method final void eat(String choice) System.out.println("I would like to eat - "+choice); > // non-virtual method private void buy(String item) System.out.println("Buy me a "+item); > > public class SimpleTesting extends Human // non-virtual method void eat(String choice) System.out.println("I would like to eat - "+choice); > // non-virtual method void buy(String item) System.out.println("Buy me a "+item); > public static void main(String[] args) SimpleTesting simpleTesting = new SimpleTesting(); simpleTesting.eat("Pizza"); simpleTesting.buy("Pizza"); simpleTesting.eat("Chicken"); simpleTesting.buy("Chicken"); > >
java.lang.IncompatibleClassChangeError: class SimpleTesting overrides final method Human.eat(Ljava/lang/String;) ---Cannot override the final method from Human---
Virtual Functions in Java interface
An interface’s functions/methods are virtual by default because they are public by default and are supposed to be overridden by the child class. In the example below, we created a method in the interface, overridden it in a class, and called it successfully. See the example below.
interface Eatable void eat(String choice); > public class SimpleTesting implements Eatable public void eat(String choice) System.out.println("I would like to eat - "+choice); > void buy(String item) System.out.println("Buy me a "+item); > public static void main(String[] args) SimpleTesting simpleTesting = new SimpleTesting(); simpleTesting.eat("Pizza"); simpleTesting.buy("Pizza"); simpleTesting.eat("Chicken"); simpleTesting.buy("Chicken"); > >
I would like to eat - Pizza Buy me a Pizza I would like to eat - Chicken Buy me a Chicken