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; public String happygreeting; public String sadgreeting; public Greeter(String sad, String happy) { setHappy(happy); setSad(sad); } public Greeter() { setHappy("Hello"); setSad("Go Away"); } 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) { } */ }