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 Greeter(String g) { setGreeting(g); } public Greeter() { setGreeting("Hello"); } public void setGreeting(String greet) { greeting = greet; } public String greet(String name) { String message; message = greeting + " " + 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) { } */ }