Please disable adblock to view this page.

← Go home

Instance Variable in Java

java-display

May 2, 2017
Published By : Pratik Kataria
Categorised in:

Let’s Start with Something Simple

Vehicle.java file in folder path: K:\Instance Variable

import model.Bike;
import java.util.List;
import java.util.ArrayList;

public class Vehicle {
	public static void main( String[] args ){

		List<Bike> bikes = new ArrayList<>();
		Bike bike1 = new Bike();
		bikes.add(bike1);
		Bike bike2 = new Bike();
		bikes.add(bike2);
		Bike bike3 = new Bike();
		bikes.add(bike3);

		for(Bike v : bikes) {
			System.out.println(v.name);
		}

	}
}

Bike.java file in folder path: K:\Instance Variable\model

package model;

public class Bike {

	public String name = "Honda";
	public long color = 0x2E0456;
	public int gearOrNot = 1;

}

Execution with errors:

  • javac Vehicle.java
    • Vehicle.java:1: error: cannot access Bike
    • import model.Bike;
    • ^
    • bad class file: .\model\Bike.class
    • class file contains wrong class: Bike
    • Please remove or make sure it appears in the correct subdirectory of the classpath.
  • K:\Instance Variable>cd model
  • K:\Instance Variable\model>javac Bike.java
  • K:\Instance Variable\model>cd ..
  • K:\Instance Variable>javac Vehicle.java
    • Vehicle.java:16: error: incompatible types: Bike cannot be converted to Vehicle                                                         for(Vehicle v : bikes) {                                                                                                                ^
    • Vehicle.java:17: error: cannot find symbol                                                                                                      System.out.println(v.name);                                                                                                                 ^
    • symbol:   variable name
    • location: variable v of type Vehicle
    • 2 errors
  • K:\Instance Variable>javac Vehicle.java
  • K:\Instance Variable>java Vehicle
  • Honda
  • Honda
  • Honda

Notes

  • We need to compile Bike.java first to prepare Bike.class
  • Writing ‘package model;’ is a must as it shows the relative package path.
  • Bike instance has the instance variable ‘name’ and not instance of Vehicle

Let’s increase the complexity

Vehicle.java file in folder path: K:\Instance Variable

import model.Bike;
import java.util.List;
import java.util.ArrayList;

public class Vehicle {
	public static void main( String[] args ){

		List<Bike> bikes = new ArrayList<>();
		Bike bike1 = new Bike();
		bikes.add(bike1);
		Bike bike2 = new Bike();
		bikes.add(bike2);
		Bike bike3 = new Bike();
		bikes.add(bike3);

		VehicleTypes vt = new VehicleTypes();

		int noOfWheels = vt.getWheels(bikes);
		System.out.println("Number of wheels: " +noOfWheels);
	}
}

 VehicleTypes.java file in folder path: K:\Instance Variable

//FOr demonstrating instance method
import java.util.List;
import model.Bike;

public class VehicleTypes {
	public int getWheels(List<Bike> bikes) {

		for(Bike v : bikes) {
			System.out.println(v.name);
		}

		return 2;
	}
}

Output

  • K:\Instance Variable>javac VehicleTypes.java
  • K:\Instance Variable>javac Vehicle.java
  • K:\Instance Variable>java Vehicle
  • Honda
  • Honda
  • Honda
  • Number of wheels: 2

Notes

  • VehicleTypes now has the method to deal with bikes object.
  • We need to import bike in VehicleTypes.
  • We create instance of VehicleTypes which helps us deal with bikes object. This reduces code in static void main method.
  • 3 things are to be noted:
    • Bike.java has the data
    • VehicleTypes has the logic to process the data
    • Vehicle.java creates the data and passes it to the VehicleTypes instance for processing.

Do It Yourself

  • Bike.java has data set to public which breaks the rules of encapsulation.
  • Make the data of Bike.java private and use Getters and Setters as the only means to access the data.

Pratik Kataria is currently learning Springboot and Hibernate.
Technologies known and worked on: C/C++, Java, Python, JavaScript, HTML, CSS, WordPress, Angular, Ionic, MongoDB, SQL and Android.
Softwares known and worked on: Adobe Photoshop, Adobe Illustrator and Adobe After Effects.