现在我分两步分来讲:
第一部分:外部类访问内部类的访问权限有多高?
大家都知道private属性定义的属性,方法都只能在自己的类中进行访问,那么,用private修饰的属性方法在外部类中能否访问呢?
答:外部类可以访问所有的内部类属性,可以通过实例化内部对象来访问内部类的所有属性,因为内部类是存在于外部类中的,所以无论内部类的属性方法为何种访问权限,外部类都可以通过实例化内部类对象获得
以下是部分操作代码:
- class Outer {
- private String info = "hello java";//外部类属性
- private class Inner {
- private String mess = "cheng";//内部类属性
- private void print (){//内部类方法
- System.out.println (info);
- }
- }
- public void fun(){
- new Inner().print ();//在内部类中可以访问内部类地所有方法
- System.out.println (new Inner().mess); //在内部类中可以访问内部类地所有属性
- }
- }
以下是完整代码:
- class Outer {
- private String info = "hello java";
- private class Inner {
- private String mess = "cheng";
- private void print (){
- System.out.println (info);
- }
- }
- public void fun(){
- new Inner().print ();
- System.out.println (new Inner().mess);
- }
- }
- public class InnerClassDemo01 {
- public static void main (String[] args){
- new Outer().fun ();
- }
- }
第二部分:内部类也可以轻松地访问外部类属性,并且不需要实例化外部类
部分代码如下:
- class Outer {
- private String info = "hello java";
- private class Inner {
- private String mess = "cheng";
- private void print (){
- System.out.println (info);//内部类可直接访问外部类属性,不需要实例化外部类对象
- }
- }
- public void fun(){
- new Inner().print ();
- System.out.println (new Inner().mess);
- }
- }
完整代码如上(与上面代码相同):
- class Outer {
- private String info = "hello java";
- private class Inner {
- private String mess = "cheng";
- private void print (){
- System.out.println (info);
- }
- }
- public void fun(){
- new Inner().print ();
- System.out.println (new Inner().mess);
- }
- }
- public class InnerClassDemo01 {
- public static void main (String[] args){
- new Outer().fun ();
- }
- }