Java修饰符与面向对象特征

306 阅读3分钟

权限修饰符

  • public
  • protected
  • 默认(空)
  • private

高级修饰符关键字

  • static【静态的】
  • final【最终的】
  • abstract【抽象的】
  • sychronsized【同步锁】
1)static 静态的 【共享(公共设施)】
  • **缺点:占用资源不放(非必要不使用)

  • 作用的资源:属性,方法,内部类,块

  • 特征:修饰的资源与对应类的对象没有关系,与类有关系,属于对应类的所有对象的共有资源。

  • a:修饰属性时 静态属性——共享信息

    • 由static修饰的变量不会在调用数次函数时相互独立,所有被调用该函数的对象中该变量的数据共享

    • 即:静态属性不属于某一个该类的对象私有,属于大家共享

    • 静态资源与对象没有关系——与类有关系

    • 可以使用类直接调用

    • 语法:类名.属性【=值】;

      • 静态属性可以使用对象调用【不推荐,会出现警告】
    • 语法:对象名.属性【=值】;

      • *用法:类共享数据
  • b:修饰方法时 静态方法——对象共享

    • 可以使用类名直接调用

    • 可以使用对象调用【不推荐,会出现警告】

    • *应用场景:工具类中工具方法

  • c:修饰块 静态块

    • 当前类被加载的时候最先调用执行,并且只执行一次

    • 跟类有关系,跟对象没有关系

    • 与普通块的区别:普通块需要创建对象时才调用,跟对象有关系

    • *应用场景:JDBC连接池的驱动类加载

  • d:修饰内部类 静态内部类

    • 获取对象:类名.内部类名 对象=new 类名.内部类类名();
2)final 最终的 【无法变更】
  • **被final修饰的内容都是最终形态,再也无法进行变更。

  • 修饰资源:属性,方法,类

  • a:修饰属性时——常量

    • 一般情况下 定义常量可以使用static和final一起修饰。
    • 例如:public static final num=0;
  • b:修饰方法时——一般继承里面才有,表示此方法无法被子类重写

  • c:修饰类时——不可以被继承

面向对象的特征【四大特征】——抽象,封装,继承,多态

  • 1)抽象——不具体内容具体化【很多时候讲特征会排除它】

    • 代码真实数据表示生活中的感官实物信息
  • 2)封装

    • 属性的封装:属性私有化,提供公共公开的方法以便获取和修改属性的值

    • 为什么会有封装?

      • 原先没有封装的时候,属性中存在问题
      • 属性问题:属性暴露出来——只要创建对象就可以直接操作属性的值
      • 业务中该类问题是不被允许的——不给直接访问属性
    • 可以使用方法进行属性赋值

    • ——方法中可以判断传入数据是否合法——以判定是否赋值

    • **封装总结:

      • java中封装的特性主要针对的是属性

      • 要求:

        • 属性私有化——使用private修饰 —— 不给直接方法

        • 提供公共公开的方法public ——

          • set方法用于设置或者修改属性值

          • get方法利用方法的返回值原理获取属性值

  • 3)继承

    • 子类继承父类,直接获取父类除了私有以外的所有属性,方法,构造方法

    • 场景:【代码复用】

      • a:多个类中代码重复

      • b:扩展类的功能

    • 关键字:extends

      • 如:public class Cat extends Animal { }
    • *子类如何获取父类的信息?

      • 在子类并未创建父类对象却可以直接获取父类所有(除私有之外)信息

      • ——省略了 关键字super

        • *super:只有在子类中有效,类似于this,发生继承时,在子类中自动创建一个父类对象存入super

          • 用法1:super . 属性 / super . 方法

            • ——在子类中调用父类的属性或方法

            • 例:super . setName()

          • 用法2: super(); ——写在子类构造方法内的最前面

            • ——在子类的构造函数中调用父类的构造函数
  • 4)多态