Defining and Using Classes
Defining Classes
Every method is associated with some class.
To run a class, we must define a main method.
public class Dog {
public static void makeNoise() {
System.out.println("Bark!");
}
}The code above can't be run directly because there's no main method.
public class DogLauncher {
public static void main(String[] args) {
Dog.makeNoise();
}
}However, the method could be called from another class.
$ java DogLauncher
Bark!Object Instantiation
Classes can contain not just methods, but also data, such as the
sizeof each dog.Classes can be instantiated as objects. For example, we will create a single Dog class, and then create instances of this Dog.
Here's a Dog class which provdes a blueprint of Dog objects.
public class Dog {
// Instance variable
public int weightInPounds;
// Constructor
public Dog(int startingWeight) {
weightInPounds = startingWeight;
}
// Non-static method (Instance method)
public void makeNoise() {
if (weightInPounds < 10) {
System.out.println("yipyipyip!");
} else if (weightInPounds < 30) {
System.out.println("bark. bark.");
} else {
System.out.println("woof!");
}
}
}public class DogLauncher {
public static void main(String[] args) {
Dog smallDog; // Declaration
new Dog(20); // Instantiation
smallDog = new Dog(5); // Instantiation and Assignment
Dog hugeDog = new Dog(150); // Declaration. Instantiation, and Assignment
smallDog.makeNoise(); // Invocaton
hugeDog.makeNoise(); // The dot notation
}
}Array of Objects
To create an array of objects:
First use the new keyword to create the array.
Then use new again for each object that you want to put in the array.
Dog[] dogs = new Dog[2];
dogs[0] = new Dog(8);
dogs[1] = new Dog(20);
dogs[0].makeNoise();Staitc vs. Non-static
Key difference between static and non-static methods:
Static method are invoked using the class name.
Instance methods are invoked using an instance name.
Static method can't access instance variables.
, but are more simple.
Sometimes, a class may contain both static and non-static methods.
public static Dog maxDog(Dog d1, Dog d2) {
if (d1.weightInPounds > d2.weightInPounds) {
return d1;
}
return d2;
}
public Dog maxDog(Dog d2) {
if (this.weightInPounds > d2.weightInPounds) {
return this;
}
return d2;
}We could declare static variables which are properties shared by all instances of the class.
public static String binomen = "Cans famliiaris";A variable or method defined in a class is also called a member of that class.
Static members are accessed using class name.
Non-static members cannot be invoked using class name.
Static methods must access instance variables via a specific instance.
public static void main(String[] args)
public: So far, all of our methods start with this keyword.static: It is a static method, not associated with any particular instance.void: It has no return type.main: This is the name of the method.String[] args: This is a parameter that is passed to the main method.
For example, this program prints out the first command line argument.
public class ArgsDemo {
public static void main(String[] args) {
System.out.println(args[0]);
}
}$ java ArgsDemo these are command line arguments
theseUsing Libraries
In CS 61B, we will use libraries include:
The built-in Java libraries such as Math, String, Integer, List, Map.
The Princeton standard library such as StdDraw, StdAudio, In.
Last updated