学习Java的第四周

心不动则不痛 提交于 2020-02-29 14:19:29

学习Java的第四周

修饰符

  1. static关键字
  • 1)静态与实例的区别:

    • (1)实例属性是每个对象各自持有的独立空间(多份),对象单方面修改,不会影响到其他对象。
    • (2)静态属性是整个类共同持有的共享空间(一份),任何对象修改,都会影响其他对象。
  • 2)静态的概念:

    • (1)静态(static)可以修饰属性和方法。
    • (2)static可以修饰属性和方法,称为静态属性(类属性)、静态方法(类方法)。
    • (3)静态成员是全类所有对象共享的成员。
    • (4)在全类中只有一份,不因创建多个对象而产生多份。
    • (5)访问静态属性和方法时,不必创建对象,可以直接“类名.属性名/方法名”访问。
  • 3)静态的特点:

    • (1)静态方法允许访问静态成员。
    • (2)静态方法不能访问非静态成员。
    • (3)静态方法不允许使用this或是super关键字。
    • (4)静态方法可以继承,不能重写,没有多态。
  1. 类加载
  • 1)JVM首次使用某个类时,将该类的.class文件加载到内存中,进行保存。
  • 2)加载时机:
    • (1)创建对象。
    • (2)创建子类对象。
    • (3)访问静态属性。
    • (4)调用静态方法。
    • (5)Class.forName(“全限定名”);
  • 3)静态代码块:
    类加载时,触发静态代码块的执行(仅一次)。
    执行地位:静态属性初始化之后。
    作用:可为静态属性赋值,或必要的初始行为。
  • 4)总结:
    • (1)静态方法允许访问静态成员。
    • (2)静态方法不能访问非静态成员。
    • (3)静态方法不允许使用this或是super关键字。
    • (4)静态方法可以继承,不能重写,没有多态。
    • (5)类加载时,触发静态代码块的执行(仅一次)。
  1. final关键字
    -·1)概念:最后的,不可更改的。
  • 2)final可修饰的内容:
    • (1)final修饰类(最终类):此类不能被继承。
    • (2)final修饰方法(最终方法):此方法不能被覆盖。
    • (3)final修饰变量(最终变量):此变量值不能被改变(变量),无初始值,仅允许赋值一次。
  • 3)要求:
    • (1)实例常量(修饰的实例变量不在提供默认值,必须手动赋值)
      • (a)期限:在对象构造之前赋值
      • (b)赋值位置:显示初始化,动态代码块,构造方法(如果在构造方法中赋值,所 有构造方法必须赋值)
    • (2)静态常量(必须手动赋值)
      • (a)期限:在类加载完成之前(通过类名调用之前)
      • (b)赋值位置:显示初始化,静态代码块。
    • (3)局部变量:显示初始化。
    • (4)基本数据类型常量:值不可变。
    • (5)引用数据类型常量:地址不可变。

接口

  1. 语法:
    (1)接口相当于特殊的抽象类,定义方法、组成部分与抽象类类似。
    (2)interface定义接口
    (3)只能定义公开静态常量、公开抽象方法

  2. 与抽象类的异同
    相同:
    (1)可以编译成字节码文件。
    (2)不能创建对象(接口不是类,不是模板的概念,没有构造方法)。
    (3)可以声明、引用。
    (4)具备Object类中所定义的方法。
    差异:
    (1)接口中的属性都是公开静态常量((隐式使用public static final修饰)。
    (2)接口中的方法都是公开抽象方法(隐式使用public abstract修饰)。
    (3)没有构造方法、没有动态代码块、没有静态代码块。

  3. 微观概念:接口是一种能力和约定。
    接口的定义:代表了某种能力。
    方法的定义:能力的具体要求。
    经验:
    (1)Java为单继承,当父类的方法种类无法满足子类需求时,可实现接口扩充子类能力。
    (2)接口支持多实现,可为类扩充多种能力。

  4. 使用规范:
    (1)任何类在实现接口时,必须实现接口中的所有的抽象方法,否则此类为抽象类。
    (2)实现接口中的抽象方法时,访问修饰符必须是public。

  5. 接口引用:
    (1)同父类一样,接口也可声明为引用,并指向实现类对象。
    (2)注意:
    a)仅可调用接口中所声明的方法,不可调用实现类中独有的方法。
    b)可强转回实现类本身类型,进行独有方法调用。

  6. 接口的多态:
    1)不再关注具体类型,而是关注行为

  7. 常见关系:

  • 类与类:
    • 单继承
    • extends 父类名称
  • 类与接口
    • 多实现
    • implements 接口名1,接口名2,接口名n
  • 接口与接口
    • 多继承
    • extends 父接口1,父接口,父接口n
  1. 常量接口
    将多个常用于状态或固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码可读性。
  2. 宏观概念:接口是一种标准。
    耦合度:模块与模块之间的关联程度,关联的越密切,耦合越高,关联的越松散,耦合越低。
  3. 接口回调:先有接口的使用者,后有接口的实现类。
  4. 接口的好处:
  • 程序的耦合度降低。
  • 更自然的使用多态。
  • 设计与实现完全分离。
  • 更容易搭建程序框架。
  • 更容易更换具体实现。

内部类

  1. 概念:在一个类的内部在定义一个完整的类。
  2. 特点:
  • 编译之后可生成独立的字节码文件。
  • 内部类可以直接访问外部类的私有成员,而不破坏封装。
  • 可为外部类提供必要的内部功能组件。
  1. 分类:
    (1)成员内部类:
  • 在类的内部定义,与实例变量、实例方法同级别的类。
  • 外面类的一个实例部分,创建内部类对象时,必须依赖外部类对象。
    • Outer out = new Outer();
    • Outer.Inner in = out.new Inner();
  • 当外部类、内部类存在重名属性时,会优先访问内部类属性。
    • 若要访问外部: 外部类名.this.属性名
  • 成员内部类不能定义静态成员。
    (2)静态内部类:
  • 不依赖外部类对象,可直接创建或通过类名访问,可声明静态成员。
  • 只能直接访问外部类的静态成员(实例成员需要实例化外部类对象)。
    • Outer.Inner in = new Outer.Inner();
    • Outer.Inner.show();
      (3)局部内部类:
  • 定义在外部类方法中,作用范围和创建对象范围仅限于当前方法。
  • 局部内部类访问外部类当前方法中的局部变量时,因无法保证变量的生命周期与自身相同,变量必须修饰为final。
  • 限制类的使用范围。
    在这里插入图片描述
    (4)匿名内部类:
  • 没有类名的局部内部类(一切特征都与局部内部类相同)。
  • 必须继承一个父类或者实现一个接口。
  • 定义类、实现类、创建对象的语法合并,只能创建一个该类的对象。
  • 优点:减少代码量。
  • 缺点:可读性较差。

Object类

  1. 概念:
  • 超类、基类,所有类的直接或间接父类,位于继承树的最顶层。
  • 任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承。
  • Object类中所定义的方法,是所有对象都具备的方法。
  • Object类型可以存储任何对象。
    • 作为参数,可接受任何对象。
    • 作为返回值,可返回任何对象。
  1. getClass()方法:
  • public final Class<?> getClass(){}
  • 返回引用中存储的实际对象类型。
  • 应用:通常用于判断两个引用中实际存储对象类型是否一致。
  1. hashCode()方法:
  • public int hashCode(){}
  • 返回该对象的十六进制的哈希码值。
  • 哈希算法根据对象的地址或字串符或数字计算出来的int类型的数值。
  • 哈希码并不唯一,可保证相同对象返回相同哈希码,尽量保证不同对象返回不同哈希码。
  1. toString()方法:
  • public String toString(){}
  • 返回该对象的字符串表示(表现形式)。
  • 可以根据程序需求覆盖该方法,如:展示对象各个属性值。
  1. equals()方法:
  • public boolean equals(Object obj){}
  • 默认实现为(this == obj),比较两个对象地址是否相同。
  • 可进行覆盖,比较两个对象的内容是否相同。
    equals()方法覆盖步骤:
  • 比较两个引用是否指向同一个对象。
  • 判断obj是否为null.
  • 判断两个引用指向的实际对象类型是否一致。
  • 强制类型转换。
  • 依次比较各个属性值是否相同。

链接: 图示.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!