title: Calling a method of a class without creating object of it
body: <pre><code>class A{
      String z(){
          System.out.println("a");
          return "sauarbh";
      }
  }
  class B{
      A a;
      A x(){
      return a;   
      }
  }
  public class runner {
      public static void main(String[] args) {
          B b = new B();
          A a2=b.x();
          a2.z(); // Calling A class method without creating object of it
      }
  }
  </code></pre>
  
  <p><strong>another example</strong></p>
  
  <pre><code>class Person
     {
     private String lastName;
     private String firstName;
     private int age;
  //--------------------------------------------------------------
     public Person(String last, String first, int a)
        {                               // constructor
        lastName = last;
        firstName = first;
        age = a;
        }
  //--------------------------------------------------------------
     public void displayPerson()
        {
        System.out.print("   Last name: " + lastName);
        System.out.print(", First name: " + firstName);
        System.out.println(", Age: " + age);
        }
  //--------------------------------------------------------------
     public String getLast()           // get last name
        { return lastName; }
     }  // end class Person
  ////////////////////////////////////////////////////////////////
  class ClassDataArray
     {
     private Person[] a;               // reference to array
     private int nElems;               // number of data items
  
     public ClassDataArray(int max)    // constructor
        {
        a = new Person[max];               // create the array
        nElems = 0;                        // no items yet
        }
  //--------------------------------------------------------------
     public Person find(String searchName)
        {                              // find specified value
        int j;
        for(j=0; j&lt;nElems; j++)            // for each element,
           if( a[j].getLast().equals(searchName) )  // found item?
              break;                       // exit loop before end
        if(j == nElems)                    // gone to end?
           return null;                    // yes, can't find it
        else
           return a[j];                    // no, found it
        }  // end find()
  //--------------------------------------------------------------                                    // put person into array
     public void insert(String last, String first, int age)
        {
        a[nElems] = new Person(last, first, age);
        nElems++;                          // increment size
        }
  //--------------------------------------------------------------
     public boolean delete(String searchName)
        {                              // delete person from array
        int j;
        for(j=0; j&lt;nElems; j++)            // look for it
           if( a[j].getLast().equals(searchName) )
              break;
        if(j==nElems)                      // can't find it
           return false;
        else                               // found it
           {
           for(int k=j; k&lt;nElems; k++)     // shift down
              a[k] = a[k+1];
           nElems--;                       // decrement size
           return true;
           }
        }  // end delete()
  //--------------------------------------------------------------
     public void displayA()            // displays array contents
        {
        for(int j=0; j&lt;nElems; j++)       // for each element,
           a[j].displayPerson();          // display it
        }
  //--------------------------------------------------------------
     }  // end class ClassDataArray
  ////////////////////////////////////////////////////////////////
  class ClassDataApp
     {
     public static void main(String[] args)
        {
        int maxSize = 100;             // array size
        ClassDataArray arr;            // reference to array
        arr = new ClassDataArray(maxSize);  // create the array
                                       // insert 10 items
        arr.insert("Evans", "Patty", 24);
        arr.insert("Smith", "Lorraine", 37);
        arr.insert("Yee", "Tom", 43);
        arr.insert("Adams", "Henry", 63);
        arr.insert("Hashimoto", "Sato", 21);
        arr.insert("Stimson", "Henry", 29);
        arr.insert("Velasquez", "Jose", 72);
        arr.insert("Lamarque", "Henry", 54);
        arr.insert("Vang", "Minh", 22);
        arr.insert("Creswell", "Lucinda", 18);
  
        arr.displayA();                // display items
  
        String searchKey = "Stimson";  // search for item
        Person found;
        found=arr.find(searchKey);
        if(found != null)
           {
           System.out.print("Found ");
           found.displayPerson();
           }
        else
           System.out.println("Can't find " + searchKey);
  
        System.out.println("Deleting Smith, Yee, and Creswell");
        arr.delete("Smith");           // delete 3 items
        arr.delete("Yee");
        arr.delete("Creswell");
  
        arr.displayA();                // display items again
        }  // end main()
     }  // end class ClassDataApp
  </code></pre>
  
  <p>As in above code i am calling z() method of class A with reference a2 without creating object of class A,As i am new to java i want to know which concept is this in java in the shown code ? for now i just know that  if we want to call a method without creating object of it we have to make that method as static .</p>
  
  <p>in the second example using person reference found we are able to call displayPerson() method without null pointer exception</p>