import java.io.*; import java.util.*; public class Greeter { /* We can initialize an instance variable when we declare it like this: */ //private String greeting="Go away"; private String greeting; private String happygreeting, sadgreeting; public Greeter(String happy, String sad) { setHappy(happy); setSad(sad); } public Greeter() { setHappy("Welcome"); setSad("Leave me alone"); } public void setHappy(String greet) { happygreeting = greet; } public void setSad(String greet) { sadgreeting = greet; } public String happyGreet(String name) { String message; message = happygreeting + " " + name + "."; return message; } public String sadGreet(String name) { String message; message = sadgreeting + " " + name + "."; return message; } /* Examples of method overloading. Notice that each method has a unique signature, that is, the order and types of the parameters are unique. Java doesn't care about the parameter names */ public void f() { } public void f(String name1) { } public void f(String name1, String name2) { } public void f(String name1, int name2) { } public void f(int name1, String name) { } /* This one doesn't work because we already have a method f with a String, String signature public void f(String name2, String name1) { } */ }