Java学习笔记21---内部类之对成员内部类的补充说明(二)

上篇文章--笔记20补充说明了前四点,这里接着来说剩下的两点。

要点如下:

5.访问权限修饰符可以修饰成员内部类

    1).访问权限修饰符对内部类的访问限制与外部类的一般成员遵循一样的规则,具体请参考笔记10;

    2).这里涉及到的子类是外部类的子类

6.访问权限修饰符可以修饰成员内部类的成员变量和成员方法

    1).成员内部类可由4种访问权限修饰符修饰,每种内部类的成员方法或变量也可由4种访问权限修饰符修饰,所以分16种情况来讨论;

    2).修饰类时涉及到的子类是外部类的子类;修饰内部类的成员方法或变量时涉及到的子类是成员内部类的子类

    3).构造方法的默认修饰符与类一致;

    4).在外部类的不同包子类中创建protected修饰的内部类的对象时,会提示构造方法不可见,这时要为该内部类添加public修饰的构造方法;

 

下面详细展开说明。

类Person中定义了4个成员内部类,分别由public、protected、默认、private修饰;并给这4个成员内部类分别添加4个成员方法,分别由public、protected、默认及private修饰。代码如下:

1 public class InnerClassPu { 2 void printInCPuDef() { 3 System.out.println("public inner class:default"); 4 } 5 6 public void printInCPuPu() { 7 System.out.println("public inner class:public"); 8 } 9 10 protected void printInCPuPro() { 11 System.out.println("public inner class:protected"); 12 } 13 14 private void printInCPuPri() { 15 System.out.println("public inner class:private"); 16 } 17 } 18 19 protected class InnerClassPro { 20 void printInCProDef() { 21 System.out.println("protected inner class:default"); 22 } 23 24 public void printInCProPu() { 25 System.out.println("protected inner class:public"); 26 } 27 28 protected void printInCProPro() { 29 System.out.println("protected inner class:protected"); 30 } 31 32 private void printInCProPri() { 33 System.out.println("protected inner class:private"); 34 } 35 } 36 37 class InnerClass { 38 //访问权限修饰符修饰成员内部类的方法 39 void printInCDefDef() { 40 System.out.println("default inner class:default"); 41 } 42 43 public void printInCDefPu() { 44 System.out.println("default inner class:public"); 45 } 46 47 protected void printInCDefPro() { 48 System.out.println("default inner class:protected"); 49 } 50 51 private void printInCDefPri() { 52 System.out.println("default inner class:private"); 53 } 54 } 55 56 private class InnerClassPri { 57 void printInCPriDef() { 58 System.out.println("private inner class:default"); 59 } 60 61 public void printInCPriPu() { 62 System.out.println("private inner class:public"); 63 } 64 65 protected void printInCPriPro() { 66 System.out.println("private inner class:protected"); 67 } 68 69 private void printInCPriPri() { 70 System.out.println("private inner class:private"); 71 } 72 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggfxw.html