类的高级概念


*****************************************************************************************************  

修饰符:

修饰符有4个:  private ,默认 , protcter , public。

                       本类         同包子类   同包非子类     非同包子类   非同包非子类

private              √    

默认(同包)  √                √                  √ 

protected          √                √                  √                       √

public                √                 √                  √                       √


以上是访问修饰符修饰的属性或者放在的访问范围。


*****************************************************************************************************  

静态修饰符static :

效果:

static -属性:1.全类共享一个值

2.与对象无关   ------------------可以用类名加点访问,被称为类属性

3.单独存放在数据段的静态区。

4.在类加载期就产生了,划分空间。

 static-方法:1.只能调用static的属性或者方法

2.非static方法可以调static方法或者属性

3.与对象无关,和类有关  ---------------类方法

4.在类加载的时候,JVM优先加载static修饰的属性或者方法

static修饰的特点:1.与对象无关,只与类有关  (面向对象分析上)

  2.在加载期有特殊动作。

       <一般工具类的工具方法可以用static修饰>

  实力初始化块:会在产生对象的时候调用,在产生对象之后,但是在构造方法我们

写的代码之前被自动调用,它的执行时机导致他并不常用,完全可以把代码写在构

造方法里面。

静态初始化块: 1.不能操作非static属性和方法。

     2.在加载期被自动执行,且只执行一次。

     3.预加载资源的动作,就实现在静态初始化块中,项目中比较常见

*****************************************************************************************************  

内部类:

特点:1.独立的class文件

    2.同样需要编译

    3.同样可以产生对象

分类:1.成员内部类----------其中有种特殊的:静态内部类

    2.局部内部类----------其中有种特殊的:匿名内部类

成员内部类:

1.拥有独立的class文件,其中class文件的名字为

外部类的类名+$+内部类的类名

2.可以拥有各种访问修饰符,效果和属性、构造、方法一样

3.可以在里面写属性、构造、方法等。也可以在里面继续写内部类。

4.成员内部中的属性或方法不能是static的。

成员内部类在外部产生的语法:

需要先new出外部对象,然后用外部类 . 内部类  变量名 = 外部对象 . new 内部类

在内部类操作外部类的属性/方法:

外部类 . this . 属性/方法

静态内部类:

1.属性和方法可以是static的 ---------与普通内部类不同。

在外部产生的语法:

2.无需产生外部类的对象,直接使用。

3.使用方式为:外部类类名 . 内部类类名作为它的类型 new出来即可。

4.静态内部类方法不能操作外部类的非静态属性/方法,只能操作静态的属性和方法。

局部内部类:

1.拥有独立的class文件,文件名的规则:

外部类类名+$+序号+内部类类名    --------序号从1开始。

2.无访问修饰符,与局部变量一样,仅在本方法内部使用。

3.也有属性,构造方法,方法,但是不能是static的

4.用法:

在本方法中使用,直接new一个就ok了

5.操作外部类:也是用  外部类.this.属性/方法

注意:局部内部类不能访问外部类方法的局部变量(但是常量可以)

匿名内部类:

1.由于没有类名,只能使用一次。在产生他的对象的时候同时去定义它。

2.也有独立的class文件:

文件名的规则:外部类名 +$+ 序号 (序号从1开始)

3.无类名,也无class关键字,也就没有任何的访问修饰符。

4.产生对象的语法和定义的语法是写在一起的,只能用一次,内部不可以

   定义构造(无类名,无法定义构造)

5.属性和方法也不能是static的。操作的时候,只能new出来后,马上用点

操作符操作,可以操作到私有的。

6.在它内部操作外部的属性和方法和局部内部类一样。















     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值