Objects of a different class (type) can access/use it
Only objects of the same class (type) can use/access it
Private
Public
public class Dog {
private String name;
public Dog(String name) { this.name = name; }
private void makeOtherDogBark(Dog otherDog) {
otherDog.bark();
}
public void bark() {
System.out.println("BAARRRRK");
}
public void barkAndMakeOtherDogBark(Dog otherDog) {
this.bark();
this.makeOtherDogBark(otherDog);
}
}
public class Main {
public static void main(String[] args) {
Dog peter = new Dog("Peter");
Dog paul = new Dog("Paul");
peter.bark();
peter.barkAndMakeOtherDogBark(paul);
peter.makeOtherDogBark(paul);
}
}
private void makeOtherDogBark(Dog otherDog) {
System.out.println("Woof Woof Woof Woof Woof"):
}
Visibility
Return Type
Method Name
Parameter List
Method body
// REQUIRES
// MODIFIES
// EFFECTS
What assumptions does the method make?
Does the object itself change? (this)
Does some other object change? (name the object)
No internal implementation details
public class Person {
private int age;
private String status;
private String name;
public Person() {
this.status = "young";
this.age = 0;
this.name = "Unnamed Person";
}
public void setName(String name) {
this.name = name;
}
public void getOlderByYears(int years) {
this.age = this.age + years;
if (age > 10) { this.status = "old"; }
}
...
}
// EFFECTS: constructs a person with age 0,
// status "young" and name "Unnamed Person"
// MODIFIES: this
// EFFECTS: sets the name of this person
// REQUIRES: years >= 0
// MODIFIES: this
// EFFECTS: increases the age of this person by years and
// sets their status to "old" if the increased age is
// greater than 10