 Polymorphism is one of the other pillars of object-oriented programming. Poly means many forms. Morph is change. So you can change into many forms. So there are two types of polymorphism in object-oriented programming. One type is what we call this method overload. This is by having this kind of property. You have the same function name and different signature. Signature means like the parameters. So in Python, it does not have this feature by default. If you want to create yourself, you can. It's a little bit difficult to do it, but it can be done. It's not as efficient. And the reason why is because, you know, it's a loosely tab language. It's a dynamic tab language. You cannot have a unique signature. But you need signature. That means something like this. So if I have a function called, say, hi. This one here has no parameter. I have another function called say hi. Same name, different signature. See, I had three functions in here. So same name, different signatures. This will work in Java and C-sharp and so forth. Python and JavaScript, no. Because, you know, the number of parameters, they have to be of different type. So it is like an integer. And if I have here like a B, and B could be a string. Well, it doesn't matter because, you know, in Python, it can be an integer or any type, same thing would be. So therefore, they are not unique, right? Unique, maybe unique data type. If you put this way, then yeah, it's really unique because I have one argument versus two. Well, we just, I just showed you that there is an argument called, sorry. And we'll take any size of arguments. As you can see how they can be a problem, right? So it doesn't work. So just so you can see, same function, different arguments, then that is called a method overload. You're overloading that method. And how do you know which one to use is dependent on when you call it? Like, say hi. If I don't pass anything to that function, then I'm calling this one here. If I pass only one argument, it's going to call this. If I pass, you know, two and then so on, right? That's the idea behind overloading a method. And usually over the methods here, these methods or functions must be inside the same class. So all of these, for example, if you're all inside the same class here, then, you know, they will be considered as. Might be overload, but of course, it doesn't work in Python this way. So I'm just showing you what it will look like, but it doesn't work. Okay. I mean, it will still work. I'm not saying that it would error out. The only thing is that if you do this way, Python will only call the last one. If you have 10 of them, even though they are, you know, code differently, Python only calls the last one you find. Okay, so you would know all these here. So that is method overload. We're not going to do any method overloading in Python, not efficient in here. So put here is like none by default. Okay. So I thought it doesn't have the other type which will use is called method override. Okay, this one here. Same at the name. Same signature. And here, same method must exist. And both parents and child classes. Okay, so you can see that overload here. You can also see must be in same class only. Okay, that is usually the way how method overload works. They must be the same class here overriding. One must be in the parent. One must be in the child class. Like I showed you earlier about this function here and the object class. So this is a function called under under rep and under string. These are method methods that I'm overriding because I can change the way that the pen, you know, uses its own implementation. So I'm overriding the parents function. That's what it means. Here. And we will do that. And this example. So here's the path class is super class. I'm going to define a function. Let's call it talk, I guess. Okay. I'll put here just some Jewish. If the animal is not a dog work that you will talk something like that. So in this case, if I try to access both of these cat and dog. They don't have the function called talk, but the parent has it. So therefore they can access this function here. I'm going to run it now. Okay, if I try to go and dog. Talk. You see that your points that cat that talk. It doesn't send the same thing right. But dog we know that dog bark and the cat nails. Right. So that is a perfect example of a method override. I can override the function here inside the dog class. And here I will copy the exact same one, and it has to be exactly same one. Okay, same name, a different implementation. Right. That's a dog. And the same for the cat I copy this and put inside the cat class down here. And this would be like me on. Okay. Let's say this run. Right. So I do dog talk. It uses its internal function and not depends function talk. It's the same thing with cat. Okay, if I have a pet down here. Let's copy one, put pet. So we know that dog and cat talks. If you had that talk. We'll do that.