Title here
Summary here
Java supports methods defined on class types.
public class Rectangle {
private int width;
private int height;
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
// This area method is defined on the Rectangle class.
public int area() {
return this.width * this.height;
}
// Methods can be defined for the class itself.
// There's no distinction between pointer and value receivers in Java.
public int perimeter() {
return 2 * this.width + 2 * this.height;
}
public static void main(String[] args) {
Rectangle r = new Rectangle(10, 5);
// Here we call the 2 methods defined for our class.
System.out.println("area: " + r.area());
System.out.println("perimeter: " + r.perimeter());
// In Java, all non-primitive types are reference types,
// so there's no need for explicit pointer handling.
// The following lines would be redundant in Java:
// Rectangle rp = r;
// System.out.println("area: " + rp.area());
// System.out.println("perimeter: " + rp.perimeter());
}
}
To run the program:
$ javac Rectangle.java
$ java Rectangle
area: 50
perimeter: 30
In Java, methods are always associated with classes. There’s no distinction between pointer and value receivers as in some other languages. All non-primitive types in Java are reference types, so method calls always operate on the same instance of the object.
Java uses object-oriented programming principles, where methods are typically defined within classes. The concept of “receiver” is implicit in Java - the object on which a method is called is always the receiver.
Next, we’ll look at Java’s mechanism for defining contracts for classes: interfaces.