What is polymorphism?
Polymorphism is the third feature of object-oriented languages after database abstraction and inheritance. Polymorphism refers to multiple forms and has the ability to express multiple forms. In object-oriented representations are handled differently depending on the type of object. Polymorphism allows each object to respond to a common message in its own way. Polymorphism enhances software flexibility and reusability.
If we create a doing() method, if it is a student, it will print for class, if it is a company employee, it will print for work.
Common practice
Use if judgment
Students are in class
The staff is working
Polymorphism practices
Polymorphism can also be understood as a programming method, and the ultimate goal of programming is nothing more than: flexibility, polymorphism, reuse, and efficiency.
The concept of object-oriented programming, object-oriented programming, has been pursued by programmers. The previous programming was process-oriented and could not be used for large-scale projects. Object-oriented programming can be said to be a revolution. It is more suitable for people. Thoughts, human thinking, rather than programming according to machine language thoughts! In C#, everything is an object! In fact, objects are not difficult to understand. For example: you are looking for a wife, what does your wife look like, how old is she, and what is her last name? , what job you do, how many boyfriends you have, etc. These are all characteristics of the object (wife).
When it comes to type conversion, there should be no need to say more about this!
As for the father The prerequisite for forced conversion of a class object into a subclass object is that the parent class object has the value of the subclass object, that is, the subclass object has been assigned to the parent class variable!
///
If it is a parent class If the object is converted to a subclass object, is the method (or attribute) of the parent class or the subclass called?
This is hard to explain. It will take a while to make it clear! There are many issues involved. Should subclasses hide or override the methods of the parent class? Besides, the parent class is abstract. Class, interface, etc. This requires detailed analysis of specific issues!
It is best to post your code to help you analyze!
The above is my understanding. If there is any mistake, please forgive me. !
Simply put, polymorphism is the characteristic of having the ability to express multiple forms. In OO, it means that the language has the ability to process objects in different ways according to their types, especially in the form of overloaded methods and inherited classes. Polymorphism is considered an essential feature of object-oriented languages.
Polymorphism has many classifications. By understanding these classifications, you can understand it more fully. I will not list it here. Please refer to the wiki encyclopedia and javaworld.
Polymorphism and pan Type (generic)
Polymorphism is actually generics.
The so-called generic means that we do not code specifically for specific types, but use universal coding for different types, whether it is data results or algorithms.
Traditional generics refer to generalizing parameters in a way similar to Template function. Typical applications are C++ STL, such as List, Vector and algorithm.
And OO can already achieve true generics through interfaces and abstract classes. In my opinion, this is the most wonderful thing about OO, which is the power of polymorphism. As for Generic in the traditional sense, I always feel that its role is no longer what it used to be.
Polymorphism and inheritance (Inheritance)
Strictly speaking, polymorphism, inheritance and overloading are not isolated. There is a close connection between them. Polymorphism is based on this Based on the two (in fact, inheritance has the feature of overloading).
Traditional polymorphism is actually implemented by virtual function and virtual table (Virtual Table was most commonly used in early C to simulate OO features, as was the implementation of C++, and later technologies have not been studied. , it is unknown whether VT is used), naturally it is inseparable from inheritance. In other words, polymorphism actually covers inheritance.
It is precisely because of the close connection between inheritance and polymorphism that it is easy for us to pretend to be others, so how to distinguish them?
Take a commonly used example:
Abstract Class Sharp implement IHaveSide {
public bool isSharp(){
return true;
}
public abstract int getSides ();
}
Class Triangle extends Sharp {
public override int getSides() {
return 3;
}
}
Class Rectangle extends Sharp {
pubilc override int getSides() {
return 4;
}
}
Then this kind of relationship is called inheritance, and the following usage method is also brought about by inheritance. Here comes:
Triangel tri = new Triangle();
println("Triangle is a type of sharp? " + tri.isSharp());
And this method is polymorphic :
Sharp sharp = new Rectangle();
println("My sharp has " + sharp.getSides() + " sides.");
What is the difference between the two? Obviously, inheritance is a method for subclasses to use parent classes, while polymorphism is a method for parent classes to use subclasses.
The technical difference is the binding period, late binding must be polymorphic. ...The rest of the text>>