Polymorph.cc
#include <iostream> #include <string> using namespace std; class User { string name; int age; public: User(string nm, int a) {name=nm; age=a;} virtual void print() { //(E) cout << "Name: " << name << " Age: " << age; } }; class StudentUser : public User { string schoolEnrolled; public: StudentUser(string nam, int y, string school) : User(nam, y){ schoolEnrolled = school; } void print() { //(F) User::print(); cout << " School Enrolled: " << schoolEnrolled; } }; int main() { User* users[3]; //(G) users[0] = new User( "Buster Dandy", 34 ); //(H) users[1] = new StudentUser("Missy Showoff", 25, "Math"); //(I) users[2] = new User( "Mister Meister", 28 ); //(J) for (int i=0; i<3; i++) { //(K) users[i]->print(); //(L) cout << endl; } // this program has a memory leak; ignore it for now //(M) return 0; }
Polymorph.java
class User { private String name; private int age; public User( String str, int yy ) { name = str; age = yy; } public void print() { //(F) System.out.print( "name: " + name + " age: " + age ); } } class StudentUser extends User { private String schoolEnrolled; public StudentUser( String nam, int y, String sch ) { super(nam, y); schoolEnrolled = sch; } public void print() { //(G) super.print(); System.out.print( " School: " + schoolEnrolled ); } public static void main( String[] args ) { User[] users = new User[3]; //(H) users[0] = new User( "Buster Dandy", 34 ); //(I) users[1] = new StudentUser("Missy Showoff",25,"Math"); //(J) users[2] = new User( "Mister Meister", 28 ); //(K) for (int i=0; i<3; i++) { //(L) users[i].print(); //(M) System.out.println(); } } }
C:\classes\ece538\work\ch03>javac Polymorph.java C:\classes\ece538\work\ch03>java StudentUser name: Buster Dandy age: 34 name: Missy Showoff age: 25 School: Math name: Mister Meister age: 28
Maintained by John Loomis, last updated 30 Dec 2006