类的高级概念

一.访问修饰符,3个关键字,4种情况

无论访问修饰符写在类,属性,方法,得到的效果都是一样的。

1.private

本类。使用最多的99%。

2.默认

同包类

3.protected

同包类,子类

4.public

所有。
###总结:但实际上极少的东西是public的。方法的话要根据具体的业务逻辑来设计

二.get/set

1.好处

  1. 可以将某个属性变为只读或者只写。
  2. 对用户外部设置的值进行有效性控制。
  3. 可以对外隐藏内部属性存放的结构。
总结:访问修饰符和get/set要配合使用,从而达到信息隐藏的效果。

三.static(静态)关键字

1.效果

  1. static属性
    1. 全类共享一个值。
    2. 跟对象无关,只跟类有关系。
    3. static修饰的属性又被称为类属性
    4. 单独存放在数据段的静态区
    5. static修饰的属性在类加载期就产生了。
  2. static方法
    1. 不能访问非静态属性和方法。
    2. 只能访问静态属性和方法。
    3. 非静态方法可以访问静态放发和属性。
    4. 跟对象无关,只跟类有关。
    5. static修饰的方法又被称为类方法。
总结:static的变量属性是极少的。常量属性一般被设置为satic的,节约内存。虚拟机会优先加载static修饰的属性和方法。

总结2:static修饰的东西与对象无关,只与类有关。凡是static修饰的东西一定在加载期有特殊动作。

2.什么时候使用static

  1. 常量。
  2. 对象无关,全类共享一个值。
  3. 这个方法不能操作对象的普通属性和方法。无论哪个对象来调用都没有差异。
  4. 工具类的工具方法是static的。例如Math和System.exit()。

四.初始化块

1. 实例初始化块

例如。

{
    System.out.println("这是一个初始化块");
}

无需进行调用,在某个时间点会自动进行调用。会在产生对象之后但是在构造方法我们写的代码之前被自动调用。所以实例初始化块没什么用!

2. 静态初始化块

static{
    System.out.println("静态初始化块");
}

不能操作非静态的属性或方法。也是自动被执行,在类加载时期自动执行的,且只执行一次。当我们需要预先加载一些资源动作的时候,这些代码就写在静态初始化块当中(项目中常见)。

五.前瞻性 -> 内部类,这种在类的内部定义的类,称为内部类。

特点:独立的一个Class文件,同样需要编译,同样可以产生对象。

1.分类

1. 成员内部类
  • 定义在外部类中,和外部类的属性,方法,构造,处于平行地位。
  • 拥有独立的class文件,其命名规则—外部类的类名+$+内部类类名。
  • 可以拥有各种访问修饰符,同样限制了这个内部类能在哪些地方被操作到。
  • 成员内部类可以定义各种属性、构造方法、初始化块甚至再次定义内部类。
  • 属性和方法不能是static的。
    语法:先要new出外部类的对象,然后通过new 对象.内部类();
2. 静态内部类—成员内部类的特例—用static修饰的成员内部类
public static class Innter{
   }
  • 命名规则与成员内部类相同
  • 也可以有访问修饰符,效果相同
  • 可以拥有静态属性
  • 无需产生外部类的对象,直接使用外部类类名,内部类类名的方法作为它的类型,new出来即可。
  • 静态内部类的方法不能操作外部类的非静态属性和方法。只能操作外部类中静态的属性和方法。
3. 局部内部类

定义在外部类的某个方法当中的。

public method(){
    class inner{
   }
}
  • 局部内部类生成的.class文件名是:外部类名+$+序号+内部类。
  • 局部内部类不能添加访问修饰符,使用效果和局部变量是一样的。
  • 没有静态方法和变量。
  • 局部内部类不能访问外部类方法中的局部变量,只能够访问常量
    使用:只能在本方法中使用。
4. 匿名内部类
  • 定义在外部类的某个方法中的。由于没有类名所以只能用一次,在产生它的对象的时候同时去定义它 —-语法极其特殊 。
  • 匿名内部类连类名都没有,没有class关键字,当然就不能使用任何访问修饰符。
  • 匿名内部类产生对象的语法和类的定义语法是写在一起的,只能用这一次。
  • 内部可以定义属性,方法,初始化块,再定义内部类。
  • 不可以定义构造方法,因为没有类名。
  • 若果想在方法中操作它的属性或方法,只能在new 出来以后马上.操作属性或者方法。
  • 匿名内部类不能访问外部类方法中的局部变量,只能够访问常量。
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值