Polymorphism refers to allowing objects of different types to respond to the same message. It has the advantages of flexibility, abstraction, behavior sharing, and code sharing. Sharing means maximum utilization and simplicity, as well as loading speed.
1. The role of polymorphism
Eliminate the coupling relationship between types. That is, the same event occurring on different objects will produce different results.
2. Polymorphic implementation forms
1. Overloading (occurs in the same class)
2. Overriding (occurs in subclasses) Class)
3. Advantages of polymorphism
1. Replaceability
2. Extensibility
3 .Interface (Polymorphism provides a common interface to subclasses through method signatures)
4. Simplicity
5. Flexibility
Note : These benefits may sound fictitious, but you can only realize them when you actually apply them.
4. Three prerequisites for the existence of polymorphism
1. There must be an inheritance relationship
2. Subclasses must override the methods of the parent class
3. The parent class reference points to the subclass object
Code example: define a parent class Animal and a subclass Dog
1 //父类——Animal 2 public class Animal { 3 int num = 44; 4 static int age = 2; 5 6 public void eat() { 7 System.out.println("动物都需要吃东西"); 8 } 9 10 public static void sleep() {11 System.out.println("动物需要睡觉");12 }13 14 public void run() {15 System.out.println("长腿的动物爱奔跑");16 }17 }
1 //子类——Dog 2 public class Dog extends Animal { 3 int num = 5; 4 static int age = 5; 5 String name = "Tom"; 6 7 public void eat() { 8 System.out.println("我爱吃狗粮"); 9 }10 11 public static void sleep() {12 System.out.println("我是一只不爱睡觉的活泼狗狗");13 }14 15 public void catchMouse() {16 System.out.println("我喜欢多管闲事");17 }18 19 }
1 //测试类 2 public class Demo_Test { 3 public static void main(String[] args) { 4 Animal a = new Dog(); 5 a.eat(); 6 a.sleep(); 7 a.run(); 8 9 System.out.println(a.num);10 System.out.println(a.age);11 }12 }
Notes Demonstration:
Print from above As a result (7), we can conclude:
1) Member variables: Print the parent class, but the subclass does not come out;
2) Member methods: If the parent class is static, print the parent class , non-static direct printing of subclasses;
3) There are errors reported in 5 and 6 on the left because we are using the wrong method when calling static members. (The correct screenshot will be shown below)
4) When calling a method that is not in the parent class (a.catchMouse();), an error will be reported. )
At this time, polymorphism cannot use its own unique properties and methods. This is the disadvantage of polymorphism. So how to solve it?
Answer: Point this parent class reference to the subclass object a, and then force it back to the Dog type. In this way, a is a reference of Dog type, and it also points to the Dog object.
The above is the detailed content of Java basics - polymorphism. For more information, please follow other related articles on the PHP Chinese website!