当前位置: 首页 > article >正文

Java面向对象第6天

精华笔记:

  1. static final常量:应用率高

    • 必须声明同时初始化

    • 常常由类名点来访问,不能被改变

    • 建议:常量所有字母都大写,多个单词用_分隔

    • 编译器在编译时会将常量直接替换为具体的值,效率高

    • 何时用:数据永远不变,并且经常使用

  2. 抽象方法:

    • 由abstract修饰

    • 只有方法的定义,没有具体的实现(连{}都没有)

  3. 抽象类:

    • 由abstract修饰

    • 包含抽象方法的类必须是抽象类

    • 抽象类不能被实例化

    • 抽象类是需要被继承的,派生类:

      • 重写抽象方法(变不完整为完整)-----------一般做法

      • 也声明为抽象类-------------------------------一般不这么做

    • 抽象类的意义:

      • 封装共有的属性和行为--------------------代码复用

      • 为所有派生类提供统一的类型-----------向上造型(代码复用)

      • 可以包含抽象方法,为所有派生类提供统一的入口(造型之后能点出来),同时可以达到强制必须重写的目的(相当于制定一个规则)

笔记:

  1. static final常量:应用率高

    • 必须声明同时初始化

    • 常常由类名点来访问,不能被改变

    • 建议:常量所有字母都大写,多个单词用_分隔

    • 编译器在编译时会将常量直接替换为具体的值,效率高

    • 何时用:数据永远不变,并且经常使用

      public class StaticFinalDemo {
          public static void main(String[] args) {
              System.out.println(Aoo.PI); //常常通过类名点来访问
              //Aoo.PI = 3.1415926; //编译错误,常量不能被改变
      ​
      ​
              //1)加载Boo.class到方法区中
              //2)静态变量num一并存储在方法区中
              //3)到方法区中获取num的值并输出
              System.out.println(Boo.num);
      ​
              //编译器在编译时会将常量直接替换为具体的值,效率高
              //相当于System.out.println(5);
              System.out.println(Boo.COUNT);
      ​
          }
      }
      ​
      class Boo{
          public static int num = 5; //静态变量
          public static final int COUNT = 5; //常量
      }
      ​
      class Aoo{
          public static final double PI = 3.14159;
          //public static final int NUM; //编译错误,常量必须声明同时初始化
      }

  2. 抽象方法:

    • 由abstract修饰

    • 只有方法的定义,没有具体的实现(连{}都没有)

  3. 抽象类:

    • 由abstract修饰

    • 包含抽象方法的类必须是抽象类

    • 抽象类不能被实例化

    • 抽象类是需要被继承的,派生类:

      • 重写抽象方法(变不完整为完整)-----------一般做法

      • 也声明为抽象类-------------------------------一般不这么做

    • 抽象类的意义:

      • 封装共有的属性和行为--------------------代码复用

      • 为所有派生类提供统一的类型-----------向上造型(代码复用)

      • 可以包含抽象方法,为所有派生类提供统一的入口(造型之后能点出来),同时可以达到强制必须重写的目的(相当于制定一个规则)

补充:

  1. 设计规则:

    • 将共有的属性和行为,抽到超类中------------------------抽共性

    • 若派生类的行为都一样,设计为普通方法

      若派生类的行为都不一样,设计为抽象方法

  2. 抽象方法/抽象类的疑问:

    • 抽象方法存在的意义是什么?

      • 保证当发生向上造型时,通过超类的引用能点出来那个方法-------保证能点出方法来

    • 既然抽象方法的意义是保证能点出来,那为什么不设计为普通方法呢?

      • 设计为普通方法,意味着派生类可以重写也可以不重写,但设计为抽象方法,可以强制派生类必须重写--------------强制派生类重写的目的


http://www.kler.cn/a/148453.html

相关文章:

  • C++ 的协程
  • GIS空间分析案例---城市公共设施配置与服务评价
  • Node.js笔记
  • 3D绘制动态爱心Matlab
  • 【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)
  • Springboot 启动端口占用如何解决
  • C 标准库 - <stdlib.h>和<string.h>详解
  • 基于mvc的大学生家教信息网站系统php+vue
  • INFINI Gateway 与华为鲲鹏完成产品兼容互认证
  • 5.golang字符串的拆解和拼接
  • 耗时一个星期整理的APP自动化测试工具大全
  • 【网络】传输层 --- 详解TCP协议
  • lv11 嵌入式开发 WDT实验 12
  • C语言:输入10个整数,写一个函数将其中最小的数和第一个数对换,把最大的数和最后一个数对换。(指针)
  • 14 网关实战:网关聚合API文档
  • 基于51单片机冰箱温度控制器设计
  • Sass混合器的详细使用教程
  • squid代理服务器(传统代理、透明代理、反向代理、ACL、日志分析)
  • ESP32-Web-Server编程- JS 基础 3
  • NFS 速度变慢问题排查 性能优化
  • 6、信息收集(1)
  • 23种设计模式之C++实践
  • 构建强大的接口自动化测试框架:Pytest实践指南!
  • 互联网架构演变过程梳理和架构思想的学习
  • 探秘开发app与小程序:一场技术与创新的博弈
  • Vue3-Pinia