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. 抽象方法/抽象类的疑问:

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

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

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

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

你可能感兴趣的:(Java,java,开发语言)