next up previous contents
Next: Inheritance 4: Protected Up: Java Notes Previous: Inheritance 2: Method Overriding

Inheritance 3: Protected


/**
 *  This code is from the book:
 *  Winder, R and Roberts, G (1998)
 *  Developing Java Software
 *  John Wiley & Sons.
 *  It is copyright (c) 1997 Russel Winder
 *  and Graham Roberts.
 */

class Superclass{

  public int i = 5;
  protected int j = 10;
  private int k = 20;

  //Method that will be inherited but 
  //not accessible in a subclass
  private void f(){
    System.out.println("f");

    //Can call g and h
    //g();
    //h();
  }

  //Method that will be inherited and is accessible to
  //a subclass and other classes in the same package
  protected void g(){
    System.out.println("f");

    //Can call f and h
    //f();
    //h();
  }

  //Shared method that is not overridden 
  //in the subclass
  public void h(){
    System.out.println("Shared");

    //Can call f and g()
    //f();
    //g();
  }
}

class Subclass extends Superclass{
  public void test(){
    i = 10; //OK inherited public variable
    j = 20; //OK inherited protected variable
    //k = 30; //Error - cannot access inherited
          //private variable

    //f(); //Error as f is private in superclass
    g();
    h();
  }
}

public class l1Inherit3{//Inherit2
  public static void main(String[] args){
    Superclass superclass = new Superclass();
    //superclass.f(); //Error method f is private

    //Can call g because
    //although the method is protected,
    //this class is in the same package
    superclass.g();
    superclass.h();

    Subclass subclass = new Subclass();
    subclass.test();
    //Error method f is inherited but private
    //subclass.f();

    //Can call g because
    //although the method is protected,
    //this class is in the same package
    subclass.g();
    subclass.h();
  }
}
/******** sample compilation & run ********
# javac l1Inherit3.java 
# java l1Inherit3 
f
Shared
f
Shared
f
Shared
# 
******************************************/



Ananda Amatya
9/15/1999