public class OuterClassAccess { private int outerPriv; int outerPckgPriv; protected int outerProt; public int outerPub; InnerClass ic; private void setOuterPriv(int v) { outerPriv = v; } private int getOuterPriv() { return outerPriv; } void setOuterPckgPriv(int v) { outerPckgPriv = v; } int getPckgOuterPriv() { return outerPckgPriv; } protected void setOuterProt(int v) { outerProt = v; } protected int getOuterProt() { return outerProt; } public void setOuterPub(int v) { outerPub = v; } public int getOuterPub() { return outerPub; } public OuterClassAccess() { ic = new InnerClass(1,2,3,4); ic.setOuterClassFields(5,6,7,8); } public String toString() { return "outerPriv: "+outerPriv+", outerPckgPriv: "+outerPckgPriv+ ", outerProt: "+outerProt+", outerPub: "+outerPub; } private class InnerClass { public InnerClass(int p, int pp, int pr, int pu) { outerPriv = p; outerPckgPriv = pp; outerProt = pr; outerPub = pu; } public void setOuterClassFields(int p, int pp, int pr, int pu) { setOuterPriv(p); setOuterPckgPriv(pp); setOuterProt(pr); setOuterPub(pu); } } public static void main(String args[]) { OuterClassAccess oc = new OuterClassAccess(); System.out.println(oc); } }