- 面向过程编程
面向过程编程 是将一件事情按流程逐步实现,这种思想强调事情完成的过程,分析步骤写出相应的代码。
- 面向对象编程
2. 类和对象面向对象编程 是当前主流的编程思想,将解决问题的所有参与对象创建出来,赋予对象对应的行为和属性,让这些对象互相配合完成,实现最终效果。
- 类Class
具有相同的属性和行为的对象的集合,称为"一类"。
类的定义:
[修饰符] class 类名(){
// 属性
// 行为
}
- 对象
对象是类的一个具体实例,是类的具体
3. 成员变量、局部变量、静态常量创建对象:
类名 对象名=new 构造方法(参数);
- 成员变量
成员变量:定义在类中的变量,使用范围在该类中,也称为这个类的属性,它有默认值,在对象创建通过对象访问。
- 局部变量
局部变量:定义在方法中的变量,使用范围在该方法中,它没有默认值,在赋值后才能使用,在方法调用时创建
- 静态常量
4. 构造方法静态常量:特殊的成员变量,使用范围在该类中,用static和final修饰,它通常需要在定义时赋值,在类加载时就创建,通过类名方法。
构造方法 是一个特殊的方法,没有返回值,方法名和类名一致。每个类在定义时,都有一个默认隐藏的无参数的构造方法,在创建对象时自动调用,通常用于初始化成员变量。构造方法可以重载不能重写。
5. 面向对象的三大特性构造方法特点:
- 没有返回值部分,方法名必须和类名一致
- 在使用new关键字创建对象时自动调用对应的构造方法
- 每个类在定义后,隐藏有一个默认的无参数的构造方法
- 如果自己写了一个构造方法后,默认隐藏的无参数的构造方法就会失效
- 构造方法通常用于初始化成员变量
- 构造方法之间都是重载关系,构造方法不能重写
- 构造方法执行时,不一定会创建对象。如抽象类中有构造方法,但该构造方法只在创建其子类对象时自动调用
- 封装
将类中使用 private 修饰属性,该类的代码和数据被外部类定义的代码随机访问,以此达到保护核心代码的目的。同时为了让外部类能够访问private修饰的属性,我们需要创建一对赋取值方法 getxxx() 和 setxxx() 方法 - 继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
在 A类 extends B类 中 A类是子类,B类是父类
重写override:子类继承父类后,对父类中的某个非私有方法进行重写,达到拓展或重做的目的。
- 重写必须要求方法名、方法返回值、方法参数列表必须相同
- 访问权限不能比父类更严格
- 不能抛出比父类更大的异常
重载overload:在一个类中,某个方法在不同的参数下,表现不同的效果。同名不同参。
- 方法名必须相同
- 方法参数列表必须不同(类型和数量)
- 与返回值无关
- 多态
多态是同一个行为具有多个不同表现形式或形态的能力。
6. this和super多态存在的三个必要条件:
- 继承
- 重写
- 父类引用指向子类对象:Parent p = new Child();
- 当做对象:this 表示当前类的对象,super 表示当前类的父类对象
this或super 当对象时,只能用在非静态方法中。 - 当做构造方法:this() 表示当前类的无参构造方法,super() 表示当前类的父类的无参构造方法,this或super 当构造方法时,只能放在另一个构造方法的第一行。
final 用于修饰属性、方法和类
- 修饰属性:变量变为常量,不能改变其值。
- 修饰方法:方法不能被重写。
- 修饰类:类不能被继承。
abstract 用于修饰类和方法,表示抽象的。 修饰方法,该方法称为抽象方法,没有方法体,同时该方法所在类一定也要使用abstract修饰成为抽象 类。
- 抽象方法只能出现在抽象类中,不能出现在普通类中
- 抽象类中可以没有抽象方法
- 抽象类中有构造方法,但该构造方法不能使用new调用,所以抽象类不能创建对象
- 抽象类中的构造方法,在创建其子类对象时自动调用
- 抽象类通常需要被继承,继承后子类一定要重写抽象类中的所有抽象方法
二、收获与不足static 可以修饰方法和属性,表示该方法或属性是静态的,在类加载时保存到内存中,无需对象参数,直接通过类名就能访问。
如果某个属性或方法被高度重用时:
- 可以将其定义为静态的,之后直接通过类名调用。
- 可以在类中定义静态代码块static{}。在类加载时自动执行的代码块。
java 面向对象部分的难度比确实基础部分难上许多,虽然知识点也不算太多,但是还是花了5天时间学习,在上面罗列的7个主要知识点我大部分都基本掌握,还不太熟悉或者理解程度还不够的就是面向对象的三大特性,这应该也是那几个知识点中最重要的部分,这是我还应该花时间的点。



