3.4 Defining a Subclass in C++

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;
}

3.5 Defining a Subclass in Java

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();                 
        }
    }
}

Results

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