前言
因为自身java基础薄弱,故决定在闲暇时期,学习一下java基础相关,顺便做成笔记,供需要的人学习
新建项目
因为有时候会涉及到程序书写,故需要建立一个项目以备使用,当然了,我们直接使用现在最流行最好用的springboot项目即可。不会新建项目的请移步 一、创建第一个springboot项目,该文章有详细步骤。
面向对象程序设计
面向对象程序设计– oop 是当今主流的程序设计泛型,面向对象的程序是由对象组成的,每个对象包含对用户公开的功能部分以及隐藏的实现部分。当然了,在oop中,不需要关心对象的具体实现。
类
类是构造对象的模板,由类构造对象的过程称之为创建类的实例。
封装是将数据和行为组合在一起,并对对象的使用者隐藏数据的实现方式。对象中的数据称为实例域,操纵数据的过程称为方法,实现封装的关键在于绝对不能让类中的方法直接的访问其他类的实例域。
可以扩展一个类来建立另一个新的类。
对象
对象的三大特征:
- 行为 — 对象的行为是用可调用的方法定义的
- 状态 — 每个对象都保存着描述当前特征的信息
- 标识 — 每个对象多有着唯一的身份
对象的三大特性相互影响。
类之间的关系
在类之间,最常见的有聚合关系,依赖关系,继承关系。
使用预定义类
对象与对象变量
要想使用对象,就必须先构造对象,并指定其初始状态,当然了,我们在java中使用构造器来构造新的实例。构造器的名字应该与类名相同,但我们通常希望构造的对象可以多次使用,于是我们声明一个变量,将对象存放于变量中。例如:
1 | new Date(); // 构造Date对象并初始化 |
注意:
单独定义的对象变量,不是对象,实际上也未引用对象。只能初始化赋值或者引用一个已存在的对象。
一个对象变量只是引用了一个对象。
任何对象变量的值都是对存储在另外一个地方的一个对象的引用,包括new操作符的返回值也是一个引用。
自定义类
从构造器开始
构造器与类同名,且总是伴随着new操作符的执行被调用,而不能对一个已存在的对象调用构造器来达到重新设置实例域的目的
注意:
- 构造器与类同名
- 每个类可以有一个及其以上的构造器
- 构造器可以有零个、一个或者多个参数
- 构造器没有返回值
- 总伴随着 new 操作符一起调用
隐式参数与显式参数
显式参数是明显的列在方法声明中的,而隐式参数使用关键字this表示。
封装
封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
封装的优点:
- 良好的封装能够减少耦合
- 类内部的结构可以自由修改
- 可以对成员变量进行更精确的控制
- 隐藏信息,实现细节
实现封装的步骤
- 修改属性的可见性来限制对属性的访问(一般限制为private),如下:将name和age的属性设置为私有的,只能本类才能访问
1 | public class Person { |
- 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问
1 | public class Person{ |
类的访问权限
方法可以访问所调用对象的私有数据,一个方法可以访问所属类的所有对象的私有数据。
final实例域
我们可以将实例域定义为final,当然了,在构建对象时必须初始化这样的域,即确保在每一个构造器执行后,域的值就被设定,在后续的使用中也不会再被更改。
final修饰符大多应用于基本类型域中,或者不可变类域中(如果类中的所有方法都不会改变其对象,则该类被称为不可变类)
对象构造
方法重载
在一个类中,我们可以定义多个方法。如果有一系列方法,它们的功能都是类似的,只有参数有所不同,那么,可以把这一组方法名做成同名方法。例如:
1 | public class helloWorld(){ |
这种方法名相同,但各自的参数不同,称为方法重载(
overload
)。
注意:
方法重载的返回值类型通常都是相同的。
无参构造
很多类都包含一个无参数的构造函数,对象由无参构造函数创建时,其状态会设置为适当的默认值。
如果在编写一个类时,没有编写构造器,则系统会提供一个无参构造器,这个构造器将所有的实例域设置为默认值。数值型数据设置为0,布尔型数据设置为false,所有对象变量将设置为null。
如果类中提供了至少一个有参构造,但是未提供无参构造,则在构造对象时如果未提供参数就会抛出错误视为不合法。