Java基础巩固 – 面向对象
简介:博主本人由于在毕业前忙于找工作,因此选择了Java后端开发,但学习过程比较碎片化,并没有进行系统性学习。本章博客将会系统性重温Java的一些基础知识和概念。
1.面向对象
1.1 概念
面向对象是一种编程思想,其基本特征分别为 封装、 继承、 多态。其核心就是将事物看做一个整体,从事物的特征(属性)以及行为(方法)两个方面对事物进行描述。
1.2 对比
编程语言有面向对象如Java、Python等也有面向过程的C,其对比如下:
面向过程 | 面向对象 | |
---|---|---|
设计思路 | 自上而下、层次化、分解 | 自下而上、对象化、综合 |
程序单元 | 函数模块 | 对象 |
设计方法 | 算法+数据结构 | 数据+方法 |
优点 | 相互独立、代码共享,性能较优 | 接近人的思维方式、方便使用、易维护、复用以及扩展 |
缺点 | 维护困难 | 执行效率较低 |
相较于面向过程,面向对象可以不用了解具体实现过程,只需要调用其中的功能即可。
1.3 面向对象三大核心
- 可重用性:代码可以重复使用,减少代码量,提升开发效率
- 可扩展性:可以在系统中容易地加入新功能
- 客观理性:将功能与数据结合,方便管理
1.4 抽象
抽象就是把同一类事物中共有的特征和行为进行抽取、归纳、总结。
2.Java面向对象
2.1 类
2.1.1 概念
用于描述一类具有相同特征(属性)和行为(方法)的对象
2.1.2 组成
- Java中使用class来定义类,在类中包含 成员属性 和 成员方法。
public class 类名 {
//成员属性
//成员方法
}
- 类的成员
- 成员变量:成员变量位于类中并在方法之外。
- 成员方法:和之前定义的方法几乎是一样的,只不过把static关键字去掉
2.1.3 关系
类是对象的抽象,类的实例化是对象
2.2 对象
2.2.1 概念
对象是系统中用于描述客观事物的实体,是构成系统的基本单位。
- 实例化流程
类名 对象名 = new 类名();
- 成员变量
数据类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0 |
double | 0.0 |
boolean | false |
char | 空字符 |
引用类型 | null |
2.3 成员变量
成员变量又是全局变量,成员变量定义在方法外部,类的内部。使用范围为这个类。在Java虚拟机中成员变量将会存储在 堆内存 中。
2.4 局部变量
局部变量位于方法中或某个语句块内部,适用范围仅限方法内或语句块中,且需要初始值。局部变量保存在 栈内存 中。
2.5 成员方法
- 创建流程:
访问修饰符 返回值类型 方法名称(参数列表){
方法体
}
成员变量可以直接在成员方法中使用,但是main方法中如果调用成员变量和方法必须通过对象.属性名\方法名(参数列表)的形式来调用。而成员方法之间的调用,直接写方法名(参数列表)即可。
2.6 构造方法
对象实例化后最先调用构造方法,可以创建对象,并且初始化成员变量。
- 方法和类名相同
- 无任何返回值
- 不能被static等关键字修饰
- 可以重载方法
- 当一个类中没有写构造方法时,系统会默认给该类一个默认的无参构造方法。当自己定义构造方法后默认的构造方法就不存在了。
2.7 this关键字
this关键字表示调用当前对象的变量。
public class Student{
//成员变量
String name;
int age;
int classNum;
public Student(String name,int age,int classNum){
//s1调用了构造方法,所以这里的this代表s1对象
this.name = name; //成员变量name=局部变量name
this.age = age;
this.classNum = classNum;
}
public static void main(String[] args){
Student s1 = new Student("张三",18,1);
System.out.println(s1.name);//打印 张三
}
}
2.8 封装
封装是将代码及其处理的数据绑定在一起的方式,该机制的存在保证了程序和数据不受外部干扰。
- 封装的目的在于保护信息,保证数据安全
- 封装包括属性封装和方法封装
- Java 提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西,私有的方法数据只能通过该类的成员代码来访问, 封装不是绝对的封装,如果想要访问封装起来的数据,可以通过指定的入口即可
- 属性和方法封装相辅相成、密不可分。
2.9 继承
程序中的继承性是指子类拥有父类的全部特征和行为,这是类之间的一种关系。
- 继承特点:
- 继承需要有层次结构并且具有一定可传递性。
- 子类将会继承父类的所有属性和方法,但是不包括 私有属性 和 构造方法。
- 子类在继承父类时可以实现自己的属性和方法。
- Java不支持多继承,即一个子类只能继承一个父类,但一个父类可以被多个子类继承。
2.9.1 super关键字
表示当前父类的引用,并且该关键字只能出现在有继承关系的子类中
-用法:
- super.属性名/super.方法名:表示父类的属性和方法,和子类中的属性或方法 重名 时使用。
- super(参数列表):出现在子类构造方法的第一句代码。
2.10 多态
多态就是同一函数在不同类中有不同的表现
- 面向对象的多态性,一个接口多个方法
- 多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。
- 多态性允许一个接口被多个同类使用,弥补了单继承的不足。