<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">public class Example {

  public static void main(String args[]) {

    // NEW OBJECTS
    // use constructor Person()
    Person dis = new Person();
    Person ira = new Person();

    // ALIAS
    // ira will have all attributes of dis
    ira = dis;

    // INSTANCE VARIABLES
    // ******************
    dis.firstname = "David";
    dis.lastname  = "Schwartz";
    
    System.out.println("Test1: " + dis.fullname());
    System.out.println("Test2: " + ira.fullname());
    
    // ALTERNATIVE
    // use different constructor
    
    Person me = new Person("David","Schwartz");
    System.out.println("Test3: " + me.fullname());
    
    // Aggregate Object
    Person cv = new Person("Charles","Van Loan");
    Person rc = new Person("Robert","Constable");

    dis.boss = cv;
    cv.boss = rc;
    
    System.out.println("DIS's Boss: " + dis.boss.fullname());
    System.out.println("DIS's Boss's Boss: " + dis.boss.boss.fullname());

    // Aliases
    System.out.println("Test Alias: " + ira.firstname);
    System.out.println("Test Alias: " + ira.lastname);
    System.out.println("Test Alias: " + ira.fullname());
    
    // What happens to dis when something assigned in ira???

    ira.firstname = "Frank";
    ira.lastname = "Stallone";
    
    System.out.println("Test2 Alias: " + dis.firstname);
    System.out.println("Test2 Alias: " + dis.lastname);
    System.out.println("Test2 Alias: " + dis.fullname());

  }
}


class Person {

  // instance variables
  String firstname;
  String lastname;
  Person boss;
  
  // constructors
  Person() { };

  Person(String fn, String ln) {
    firstname  = fn;
    lastname   = ln;
  }

  // methods
  String fullname() {
    return firstname+" "+lastname;
  } //method fullname

} // class Person



/* output:
Test1: David Schwartz
Test2: David Schwartz
Test3: David Schwartz
DIS's Boss: Charles Van Loan
DIS's Boss's Boss: Robert Constable
Test Alias: David
Test Alias: Schwartz
Test Alias: David Schwartz
Test2 Alias: Frank
Test2 Alias: Stallone
Test2 Alias: Frank Stallone
*/
</pre></body></html>