华清远见-JavaEE学习——面向对象部分总结

一、面向对象部分重要知识点

1. 两种编程思想

  • 面向过程编程

面向过程编程 是将一件事情按流程逐步实现,这种思想强调事情完成的过程,分析步骤写出相应的代码。

  • 面向对象编程

面向对象编程 是当前主流的编程思想,将解决问题的所有参与对象创建出来,赋予对象对应的行为和属性,让这些对象互相配合完成,实现最终效果。

2. 类和对象

  • 类Class
    具有相同的属性和行为的对象的集合,称为"一类"。

类的定义:
[修饰符] class 类名(){
// 属性
// 行为
}

  • 对象
    对象是类的一个具体实例,是类的具体

创建对象:
类名 对象名=new 构造方法(参数);

3. 成员变量、局部变量、静态常量

  • 成员变量

成员变量:定义在类中的变量,使用范围在该类中,也称为这个类的属性,它有默认值,在对象创建通过对象访问。

  • 局部变量

局部变量:定义在方法中的变量,使用范围在该方法中,它没有默认值,在赋值后才能使用,在方法调用时创建

  • 静态常量

静态常量:特殊的成员变量,使用范围在该类中,用static和final修饰,它通常需要在定义时赋值,在类加载时就创建,通过类名方法。

4. 构造方法

构造方法 是一个特殊的方法,没有返回值,方法名和类名一致。每个类在定义时,都有一个默认隐藏的无参数的构造方法,在创建对象时自动调用,通常用于初始化成员变量。构造方法可以重载不能重写。

构造方法特点

  • 没有返回值部分,方法名必须和类名一致
  • 在使用new关键字创建对象时自动调用对应的构造方法
  • 每个类在定义后,隐藏有一个默认的无参数的构造方法
  • 如果自己写了一个构造方法后,默认隐藏的无参数的构造方法就会失效
  • 构造方法通常用于初始化成员变量
  • 构造方法之间都是重载关系,构造方法不能重写
  • 构造方法执行时,不一定会创建对象。如抽象类中有构造方法,但该构造方法只在创建其子类对象时自动调用

5. 面向对象的三大特性

  • 封装
    将类中使用 private 修饰属性,该类的代码和数据被外部类定义的代码随机访问,以此达到保护核心代码的目的。同时为了让外部类能够访问private修饰的属性,我们需要创建一对赋取值方法 getxxx()setxxx() 方法
  • 继承
    继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
    在 A类 extends B类 中 A类是子类,B类是父类

重写override:子类继承父类后,对父类中的某个非私有方法进行重写,达到拓展或重做的目的。

  • 重写必须要求方法名、方法返回值、方法参数列表必须相同
  • 访问权限不能比父类更严格
  • 不能抛出比父类更大的异常

重载overload:在一个类中,某个方法在不同的参数下,表现不同的效果。同名不同参。

  • 方法名必须相同
  • 方法参数列表必须不同(类型和数量)
  • 与返回值无关
  • 多态
    多态是同一个行为具有多个不同表现形式或形态的能力。

多态存在的三个必要条件:

  • 继承
  • 重写
  • 父类引用指向子类对象:Parent p = new Child();

6. this和super

  • 当做对象:this 表示当前类的对象,super 表示当前类的父类对象
    this或super 当对象时,只能用在非静态方法中。
  • 当做构造方法:this() 表示当前类的无参构造方法,super() 表示当前类的父类的无参构造方法,this或super 当构造方法时,只能放在另一个构造方法的第一行。

7. 一些重要的关键字

final 用于修饰属性、方法和类

  • 修饰属性:变量变为常量,不能改变其值。
  • 修饰方法:方法不能被重写。
  • 修饰类:类不能被继承。

abstract 用于修饰类和方法,表示抽象的。 修饰方法,该方法称为抽象方法,没有方法体,同时该方法所在类一定也要使用abstract修饰成为抽象 类。

  • 抽象方法只能出现在抽象类中,不能出现在普通类中
  • 抽象类中可以没有抽象方法
  • 抽象类中有构造方法,但该构造方法不能使用new调用,所以抽象类不能创建对象
  • 抽象类中的构造方法,在创建其子类对象时自动调用
  • 抽象类通常需要被继承,继承后子类一定要重写抽象类中的所有抽象方法

static 可以修饰方法和属性,表示该方法或属性是静态的,在类加载时保存到内存中,无需对象参数,直接通过类名就能访问。
如果某个属性或方法被高度重用时:

  • 可以将其定义为静态的,之后直接通过类名调用。
  • 可以在类中定义静态代码块static{}。在类加载时自动执行的代码块。

二、收获与不足

java 面向对象部分的难度比确实基础部分难上许多,虽然知识点也不算太多,但是还是花了5天时间学习,在上面罗列的7个主要知识点我大部分都基本掌握,还不太熟悉或者理解程度还不够的就是面向对象的三大特性,这应该也是那几个知识点中最重要的部分,这是我还应该花时间的点。

你可能感兴趣的:(java-ee,学习,java)