个人笔记 —— 访问权限修饰符,变量修饰符,方法重写,接口

Day Seven

访问控制符/权限修饰符

可以修饰: 类,[静态]成员变量, [静态]成员方法, 构造方法

public: 公开的, 公共的

protected: 受保护的

default: 默认的修饰词, 不加default关键字, 不写任何内容

private: 私有的

四种访问位置:

  1. 自己本身这个类中(都可以访问)

  2. 同一个包中(但没有关系的类)(default,protected,public修饰的类可以访问)

  3. 父子类(不同包的情况,同包则与 2. 相同)(protected,public修饰的类可以访问)

  4. 所有类(既不同包,也不是父子关系)(public修饰的类可以访问)

权限范围由大到小:public —> protected —> default —> private

default: 不常用, 练习时为了省略代码

public : 常用于想要提供给其他类使用的成员/方法

protected: 常用于想要给子类继承的成员/方法

private: 可用于所有的普通成员变量/方法

  • 封装: 为了保证成员变量的安全性, 给设置为私有的
  • 提供给外部访问这个成员变量的方法 get/set
JavaBean规范 -> 所有的实体类

1.命名 驼峰命名法
2.成员变量私有化, 提供get/set方法
3.提供空参构造方法

变量/方法修饰符
  • static: 静态的, 属于类的, 修饰成员变量/成员方法

  • abstract: 抽象的, 修饰类/成员方法

  • final: 最终的, 修饰类/成员方法/成员变量/局部变量

    修饰类: 类不能被继承(不能有子类)
    修饰方法: 方法不能被重写
    成员变量: 变量不能被修改, 必须初始化(可通过构造方法,代码块进行初始化)
    局部变量: 变量不能被修改, 必须初始化(定义时可以唯一赋值)
    引用类型变量: 引用地址不能被修改,内容可以修改

      final int[] a = {1, 2, 3, 4, 5};
      // final 修饰引用类型变量, 引用-地址不能改变, 对象内容可以改变
      a[0] = 3;
      //   a = new int[4];
      final Cat cat = new Cat();
      cat.a_public = 20;
      //   cat = new Cat();
    
      
      byte b1 = 57;
      b1 = 23 + 34; // 字面量相加, 加完发现在127范围内
      byte b2 = 120;
      // b1 = b2 + 34; // 变量相加, 不确定范围, 认定为int类型, 编译错误
      final byte b3 = 23;
      b1 = b3 + 34; // 常量和字面量, 加完发现范围没有超过
    
方法重写的详细规范:
  1. 子类中的方法名和参数列表要和父类中一致
    @Override 可以检测这个方法是不是重写, 方法语法不符合重写就会报错
    如果语法符合,即使没有加 @Override, 也属于重写
  2. 子类中的权限访问修饰符的范围, [大于等于] 父类中的方法权限
  3. 子类中的返回值类型, [小于等于] 父类中的返回值类型
    引用类型 小于等于: Zi -> Fu -> Object Fu->Zi(×)
    (猫是动物 √,动物是猫 ×)
    基本数据类型, 只能相同
    Fu fu = new Zi(); // √
    Zi zi = new Fu(); // ×
  4. 异常
接口 —— 特殊的抽象类

抽象类: 可能会存在抽象方法

接口中可以有的各种抽象方法:
(不论什么版本)

  1. 公开的抽象方法

  2. 公开的静态常量 (从JDK8版本开始)

  3. 静态的方法 static 修饰 (属于接口本身,通过接口名直接调用)

  4. 默认的方法 default 修饰

    通常用来做接口功能的扩展,可以在实现类中覆盖(重写),从JDK9版本开始

  5. 私有方法 private

    普通的私有方法: 为了给default方法中的公共代码提取, 实现代码复用(在default方法中进行调用该类方法)
    静态的私有方法(增加修饰符 static): 为了给 static 方法中公共代码提取的

回顾:

在类(静态)方法中, 不能直接调用成员变量和成员方法
成 员方法中, 可以直接调用类方法和类变量

使用接口的步骤: 用 implements 实现

  1. 接口不能直接new对象, 需要一个实现类来 实现接口

      public class A implements InterfaceA {
       
      }
    

    将接口中的所有抽象方法覆盖/重写(实现)

  2. 创建实现类对象, 调用方法
    注意事项: 实现类没有覆盖重写(实现)所有的抽象方法,则这个实现类一定是抽象的(用 abstract 进行修饰)

关系:

  1. 类和接口: 1 v n implements 实现
  2. 类和类 : 1 v 1 extends 继承
  3. 接口和接口: 1 v n extends 继承
  4. 接口和类: 没有关系
  5. 一个类一定有唯一的父类, 可以有多个父接口
    • 实现多个接口, 要将这些接口中所有的抽象方法都实现掉
    1. 父类中有抽象方法, 也要被实现
    2. 如果多个接口中,有重复的抽象方法,实现一次即可
    3. 如果多个接口中,有重复的default方法,必须要重写一个

多态:
Fu fu = new Zi();
子类对象的父类引用

命名规则补充(常量类):

常量: 有final 修饰的变量
全部大写, 多个单词拼接, 使用 “ _ ” 进行连接
例如:EXIT_ON_CLOSE 见名知意
静态常量 Math.PI (圆周率)—> 常量字段

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值