Holy frig, tell me about it. It took like 5 tutorials and 3 books before I finally got all of it. Most of what I learned came from C++ for Dummies, but Polymorphism still baffled me. I bought Java for Dummies as well, and it explained it quite well, although I gotta read up on how C++ does polymorphism, because it's different from Java (Java automatically makes every class a polymorphic class).
And once you learn what you can do with it, you start thinking "oh man, if only I could do that with QB/FB!"
I like being able to write about things in relation to Basic, because it's easier to explain a more abstract thing.
Just to tide you over till the next issue, Nathan, here's a short explanation of classes. Classes are like the TYPE...END TYPE clause in QB. Except they can have subs and functions. Variables, subs and functions are referred to as members. (insert Peter Griffin laugh). Member functions and subs can also be referred to as methods. Members can be public, protected, and private. (More Peter laugh.) Public means that any part of your program can access that member. Protected means that only that class can access it. Private I'm not sure about.
The whole point of object oriented programming is to create an "interface" to which you can easily assemble your programs with (Encapsulation). One technique OOP proggers have come up with are "getters" and "setters". Since you want an easily useable interface for your classes, you don't want to have to worry about changing a value in the middle of your program to a value that will crash your program. So you set your important variables to protected, and then you make a member function called "GetVariable" and one called "SetVariable". (except you change the name of the variable, obviously.) In here, you make it so that an illegal value can't be set.
Inheritance is where you make another class that gets all of the members of another class, and then you add some other things. So in a game, you could have a class called "object" with all of the things you'd need. And then you could have the class "NPC" inherit all of the things an object has, and then add things like movement and whatnot.
But maybe the class "object" had a method in there that didn't quite do what you wanted with the NPC class. But the problem is, you've already written half your program, and the method has already been called a billion times. So you declare the original class (in this case, object) a polymorphic function, and then write the new member class, and use the same name of the function.
Abstract? Yes, but I will hopefully better expain it in detail in the tutorial.
"Sorry for beating you up with a baseball bat Julian, but I DID think that you were a samsquanch."