Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: using constants in Derived class

by JavaFan (Canon)
on Nov 17, 2010 at 12:30 UTC ( [id://871984]=note: print w/replies, xml ) Need Help??


in reply to using constants in Derived class

No, it's not going to work that way. And I'm not sure you want to. But what you can do is:
package Automobile; sub CarType {die "Ought to be overridden!"} __END__ package Car; our @ISA = qw[Automobile]; sub CarType {"STRING1"} __END__ package Truck; our @ISA = qw[Automobile]; sub CarType {"STRING2"} __END__ package ParkingLot; $x = $automobile->CarType;
But do you really want to? I don't know your code, but it smells wrong. Perhaps you need to know the type because it matters how quickly the parking lot is full - it's the size that's important. Better is to have the ParkingLot be agnostic about what class (or type) of automobile it's dealing, and just ask the automobile for the number of slots in needs:
package Automobile; sub covers_slots {die "Ought to be overridden!"} __END__ package Car; our @ISA = qw[Automobile]; sub covers_slots {1;} __END__ package Truck; our @ISA = qw[Automobile]; sub covers_slots {3;} __END__ package ParkingLot; $slots = $automobile->covers_slots;
Then now if you introduce the classes "Limo", "Schoolbus" and "TinyCar", you don't have to change your ParkingLot module. And it also allows the Truck module return different numbers of covered_slots depending on the size of the truck (big trucks need more slots than small ones).

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://871984]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (5)
As of 2024-04-25 23:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found