Java内部类之成员内部类(二)

Java内部类之成员内部类(二)

定义:

成员内部类是定义在外部类的成员位置,并且没有static修饰;

声明格式:

修饰符  class  外部类名称{
    
    修饰符  class  内部类名称{ 
    
    }
}

特性:

1.具有类的相关定义功能;
2.不能定义静态变量和静态方法;
3.可以定义静态常量;
4.可以通过访问劝降修饰符来访问成员内部类;
5.可以在外部进行访问;
6.可以继承和实现接口;

用法:

1.可以直接访问外部类的所有成员,包含私有的;

class Outer {		//外部类
    private int r = 0;
    public static int count =1;
     
    class Inner {     //内部类
        public void drawSahpe() {
            System.out.println(r);  //外部类的private成员
            System.out.println(count);   //外部类的静态成员
        }
    }
}

2.可以添加任意访问修饰符(public、protected、默认、private),因为它的地位就是一个成员;

class Outer {	//外部类
    public class Inner1 {	//内部类
        
    }
    protect class Inner2 {	//内部类
        
    }
    class Inner3 {		//内部类
        
    }
    private class Inner4 {		//内部类
        
    }
}

3.作用域和外部类的其他成员一样,为整个类体,外部类访问成员内部类时的访问方式:先创建对象,再访问;

class Outer {
    private double radius = 0;
 
    public Outer(double radius) {
        this.radius = radius;
        getDrawInstance().drawSahpe();   //必须先创建成员内部类的对象,再进行访问
    }
     
    private Inner getDrawInstance() {
        return new Inner();
    }
     
    class Inner {     //内部类
        public void drawSahpe() {
            System.out.println(radius);  //外部类的private成员
        }
    }
}

4.成员内部类访问外部类成员时(比如;属性)[访问方式:直接访问];

class Outer {		//外部类
    double radius = 0;
     
    class Inner {     //内部类
        public void drawSahpe() {
            System.out.println(radius);  //外部类的成员属性
        }
    }
}

5.如果外部类和内部类的成员重名时,内部类访问的话,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问;

外部类.this.成员变量
外部类.this.成员方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值