Просто пересматриваю и объясняю свою концепцию полиморфизма здесь через сообщение в блоге. Слова “Полиморфизм” означают множественные формы. В Java полиморфизм означает несколько форм объекта . Мы разделим эту статью на 3 раздела. 1.Синтаксис 2.Вызов переменной полиморфно. 3.Вызов метода полиморфно.
3.Вызов метода полиморфно.
Теперь о полиморфизме в Java, о главном правиле, которое нужно запомнить является
Это означает, что ссылка на переменную (LHS) всегда должна быть ссылкой на суперкласс, а инициализация объекта (THIS) должна быть подклассом.
Например: класс А{
} класс B расширяет A{ } класс C расширяет B{ } класс D расширяет A{ }
Таким образом, допустимый и недопустимый синтаксис в соответствии с правилом большого пальца будет
A a =new B(); //VALID B b=new D(); //NOT VALID C c=new A(); //VALID A a1=new D(); //VALID
2.Вызов переменной полиморфно.
Если переменная вызывается из полиморфного объекта, мы следуем ссылке т.е. класс супер . И если переменная отсутствует в суперклассе, это приводит к ОШИБКЕ КОМПИЛЯЦИИ. НАПРИМЕР:
class A{
int x=5;
}
class B extends A{
int x=10;
}
class App{
public static void main(String[]args){
A a=new B();
System.out.println(a.x);
//What do u think is the output class A x value (5)or class B x value(10)?Follow the rule.
}
}
OUTPUT:
5
Вызов метода полиморфно.
Если метод вызывается из полиморфного объекта, мы выполняем 2-шаговую процедуру: 1.Мы добрались до суперкласса и проверяем, присутствует ли метод или нет.
if(present) Goto to step 2 else COMPILE ERROR
2.Перейдите в подкласс и проверьте, переопределен ли метод или нет.
if(overrided) Call the sub-class version else Call the super -class version.
Напр.:
class A{
void m1(){
System.out.println("A");
}}
class B extends A{
void m1(){
System.out.println("B");
}}
class App{
public static void main(String[]args){
A a=new B();
a.m1(); //Follow the rule
B=new B();
b.m1(); //Normal sub class object method call
}}
OUTPUT:
B
B
Так что это все для полиморфизма в java. Если какая-либо ошибка, пожалуйста, не стесняйтесь исправлять меня в комментариях (грамматически или иным образом).
Счастливого Обучения:)
Оригинал: “https://dev.to/shwetarkadam/polymorphism-in-java-260f”