内部类相关

1.内部类是指Java中可以将一个类定义在另一个类的内部;

2.内部类可以定义在类的内部,那也就是和类成员一个层次--->成员内部类

3.内部类可以定义在方法和块的内部,那也就比类成员低一个层次--->和局部变量一个层次--->局部内部类;     

3.匿名内部类:成员匿名内部类、局部匿名内部类;

4.静态(static修饰的)内部类:是静态成员内部类; 

5.$通常用来命名内部类字节码文件--->外部类$内部类.class;        


*1.成员内部类: 

(1).成员内部类可以和正常类成员一样使用不同的修饰符(特征、权限修饰符都可以)来修饰;

(2).优点:省略了一个源文件(.java);在成员内部类中可以访问外部类的所有成员,包括私有元素;

(3).不可以直接创建内部类的对象需要通过外部类的对象来创建内部类的对象--->外部类的对象.new 内部类;

(4).若想在内部类中通过对象.调用外部类的成员,需要写成:外部类.this.外部类成员(重名的时候这样,如果不重名可以直接用);

2.局部内部类:

(1).因为局部内部类的层次和变量一样,所以可以用的权限修饰符和变量一致,只有一个默认不写;特征修饰符中,由于是变量层次所以不可以用static来修饰,但是由于还是一个类,所以可以用abstract和final来修饰;

(2).局部内部类命名规则Demo$1InnerDemo--->表示第一次出现;

(3).局部类里面使用变量只能是final修饰的变量,可以直接用外部类的属性;

*3.匿名内部类

1.也分成员/局部;

2.通常是他们的具体子类为了实现接口/抽象类写的,为了省略这个子类的文件而使用的,一般用局部的;格式如下:

//这是一个接口;
public Interface Box{


}
    
    Box box=new Box(){
//这就相当于是一个类,没有名字的;
//里面写用来多实现这个接口的内容;


}

3.只有类体,没有类的所有结构(修饰符、名字、继承、实现、构造方法);任何修饰符都不可以用,一般用作按钮;   

4.可以把这个Box类型的返回值box定义在类的属性里,那么就可以通过这个类的属性来调用这个方法;   

4.静态(static修饰的)内部类

1.可以用正常new的方式创建它的对象,不需要通过外部类的对象;

2.不能访问非静态成员(自己类和外部类都一样);

3.权限修饰符都可以使用,特征修饰符也是;     


主类可以用的修饰符 :public/默认不写;abstract/final;

成员内部类可以用的修饰符:public/protected/默认不写/private:abstract/static/final;

局部内部类可以用的修饰符:默认不写;final/abstract;

静态(成员)内部类可以用的修饰符:public/protected/默认不写/private:abstract/final;                                                                                                                                                                                                                                                                                                                                                                                                                   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

溜溜吃鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值