Hey I don't know what kind of development teams your working with, but I've found that on small one off projects done with a small team, they aren't that important. It's more of a big team, long term project, lotsa code type thing.

You can absolutely go with never using them, but it's a nice thing to learn, and starts to get useful with AS3 type checking.

So, an interface file is like a contract you are setting up with your code. An interface (and you can see the syntax in your books), consists of public variables and functions and their return types. These functions don't do anything in the interface itself, that is they don't run.

Where your interfaces get used is when you have a class that "implements" one of your interfaces. So lets say you have MyClass extends MySuperClass implements IMyInterface. (by convention interface files start with I....etc, but of course you don't have to)

So, for your project to even compile (when you implement an interface), you'd better be damn sure that your "MyClass" has all the functions and variables YOU defined in IMyInterface It seems limiting, but, on a large team, you might have a dozen developers creating a hundred or so classes that are all supposed to plugin somewhere in your main project. If you create an interface, and make it known that all developers must implement your interface, you can be sure that your dozen developers and your hundred classes are going to have the methods that YOU need to work in your project.

And then if you make a large scale change to your project - you can just change the interface - maybe add another method to it that you need for additional functionality. If your dozen developers update to the new interface file, all their code won't compile anymore - and they'll have to update to your new methods before they get a compile!

So it's handy on large teams.

I've also found it handy for typecasting in AS3. Sometimes I might have 2 classes that do sort of the same thing, but not quite. Maybe I have a mix of several similar (but not identical) objects in an array, and I want to loop through.

So for example: list = [ myClassA, myClassB, myClassC, myClassA, myClassB, myClassC, myClassA, myClassB, myClassC ]; Now I loop through my objects, and I want to assign them to like a temporary variable and perform an action on them.

So.... var temp = list[c];
But what do you type temp...you could do
var temp:* = list[c]

And you could put anything you wanted in the variable. But we have type casting in AS3 for a reason!

You could create an interface full of the common methods and variables uses by myClass A,B and C, make those classes implement your interface, and then do your typecasting as this:

var temp:IMyClasss = list[c];

Then you aren't using the wildcard to type your object AND you'll get auto-complete for code, and compile time checking of anything you're trying to do to your class that isn't supported.

Hope this helps!
ben



Omar Fouad wrote:
This could seem weird...
But what the hell is an interface!!!???????? I've read lots of books and
posts without getting the answer. I bought "Essential AS3" to read about
interfaces and he says that helps for multi inheritance. In other places I
read that it is a "deal" to ensure that a class has some methods and so on.
But what is the real benefit that I can come out with using interfaces????

Maybe that is stupidity or I am not smart enough to get the concept but
believe me... its is been two years now!!

Please Help!!!

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to