Yeah, you seem to be pretty confused. But, can anybody answer my question, please?
On Mar 15, 7:54 am, [email protected] wrote: > I would like to correct my statements in previous post. > On Mar 15, 5:28 am, [email protected] wrote:> On Mar 15, 3:53 am, Anton Shaykin > <[email protected]> wrote:> Well, thanks for the compliment :) > > > Now, there is something, I feel a bit unsure about... > > > What if we want to call some Student class methods, which are not > > > declared by PersonInterface, then will we need to create an instance > > > of Student class like the following: > > > Student stud = new Student(); > > > Consider this. An abstract class can invoke methods of its subclass, > > therefore, it can be a good type candidate too. Example: > > AbstractPerson student=new Student(); > > // Valid. Even though calculateAverage() is not declared in > > AbstractPerson. > > student.calculateAverage(); > > Wrong. Not valid. An <abstract class type> cannot access its > undeclared method. Sorry if I further confuse. > > > Therefore, should not this recommendation be reserved for case by case > > basis? > > > > Or is it a strict requirement for PersonInterface to declare all the > > > methods which could be used in superclass and its subclasses that > > > implement it? > > > Thanks. > > > > On Mar 14, 10:14 pm, Deepak A L <[email protected]> wrote: > > > > > Wow, This is Awesome and the best reply from [email protected] i > > > > have > > > > ever seen .....very Much True in this case..... > > > > > Let me add one more thing here. > > > > * > > > > Coding to an interface is the best "design" Approach as against to > > > > coding > > > > wrt to a Class.* > > > > > You need to change the implementation at only one place as against at 2 > > > > places, and the implementations as defined in RHS side in below example > > > > can > > > > be changed at any given pointof time > > > > > //See below code > > > > //PersonInterface has only method definitions as shown below. > > > > Interface PersonInterface{ > > > > public void nameOfPerson(String name); // some dummy method > > > > > } > > > > > Different implementations for same are > > > > Student,VicePresident,ViceChairman. > > > > > So in my code the below statements are perfectly valid. > > > > > PersonInterface pi = new Student(); > > > > (or) > > > > PersonInterface pi = new VicePresident(); > > > > (or) > > > > PersonInterface pi = new ViceChairman(); > > > > > Hope i have made things clearer. > > > > If Student is my class then the below practize of writing the code is > > > > NOT > > > > Recommended EVEN though it is PERFECTLY VALID. > > > > > Student st = new Student(); > > > > > (or) > > > > > VicePresident vp = new VicePresident() ; > > > > > (or) > > > > > ViceChairman vc = new ViceChairman(); > > > > > --- > > > > Thanks and Regards, > > > > Deepak Lalchandani > > > > Bangalore > > > > India > > > > > On Fri, Mar 13, 2009 at 4:16 PM, Anton Shaykin > > > > <[email protected]>wrote: > > > > > > > Why is using an interface as type is recommended over class? I > > > > > > cannot > > > > > > see the advantage of doing so. > > > > > > Because, doing so, you can achieve run-time polymorphism which is > > > > > quite powerful, and your classes don't have to be extended. > > > > > It's like assume you have an interface for a stack, which has abstract > > > > > methods push() and pop(). And you have 2 different stack classes, say, > > > > > FixedStack and DynamicStack (which is growable). And each of them has > > > > > different implementation of your interface (that is different > > > > > implementation of pop() and push() methods). Now, in your main class, > > > > > you can create a reference of interface type and then assign it > > > > > FixedStack and DynamicStack objects, and doing so, you will get > > > > > different implementation of methods declared in your interface > > > > > depending on type of object your interface reference currently refers > > > > > to. > > > > > So, after you assign PersonInterface pi reference to Person object, > > > > > you can use the version of methods declared in Person class, then you > > > > > can assign the same pi reference to Student object, and you will get > > > > > different implementation of the same methods, and so on. > > > > > Sorry if my explanation is too obscure. Maybe someone else will clear > > > > > things up better :) > > > > > > On Mar 12, 8:39 pm, [email protected] wrote: > > > > > > @ page: 21 > > > > > > > @ quote > > > > > > ● Interfaces and classes are both types > > > > > > - This means that an interface can be used in places > > > > > > where a class can be used > > > > > > - For example: > > > > > > // Recommended practice > > > > > > PersonInterface pi = new Person(); > > > > > > // Not recommended practice > > > > > > Person pc = new Person(); > > > > > > > Question: > > > > > > Why is using an interface as type is recommended over class? I > > > > > > cannot > > > > > > see the advantage of doing so. > > > > > > > Thank you. > > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/javaprogrammingwithpassion?hl=en -~----------~----~----~----~------~----~------~--~---
