目录
一、什么是类
类是用来对实体(对象)进行描述的,类是一个抽象化的概念,举个例子:工程师用图纸来建造大楼,其中类就相当于图纸,大楼相当于对象,我们可以依靠类来创造(实例化)出若干个对象
二、类的定义格式
在Java中定义类需要用到class关键字:
class为定义类的关键字;ClassName是类的名字;{ }中的是类的主体
类中包含的内容称为类的成员,可分为成员变量(也称为字段或成员属性)和成员方法,成员变量用来描述类具有哪些性质,成员方法用来描述类可实现的功能
三、类的实例化
定义了一个类,就相当于在计算机中定义了一种新的类型,称为类类型,用类类型创建对象的过程称为类的实例化,我们用“ . ”符来访问对象中的属性和方法,同一个类可以创建多个对象
四、this的引用
1、this的作用
(1)区分出形参名与成员变量名
(2)当对象调用成员方法时,使成员方法明确要对哪个对象进行操作
注意:this只能在成员方法中使用且this只能引用当前对象
五、对象的构建及初始化
1、构造方法
概念:构造方法(也称构造器)是一种特殊的成员方法,构造方法名必须与类名相同,在创建对象时由编译器自动调用,并且在整个对象生命周期内只调用一次
特点:
(1)名字必须与类名相同
(2)无返回值类型(void也不行)
(3)在对象的生命周期内只调用一次(相当于人的出生只有一次)
(4)可以重载
(5)如果用户没有定义构造方法,编译器会自动生成一个无参的构造方法,但是只要用户定义了构造方法,编译器则不会再自动生成一个
(6)构造方法中可以用this()来调用其他的构造方法:
注意:this()要放在构造方法的第一行
2、默认初始化
与局部变量不同的是,即使成员变量不被初始化程序也不会报错,原因是系统检测到成员变量没有被初始化时,会给成员变量初始化一个默认的值,(int,byte,short)初始化为0;(long)初始化为0L;(char)初始化为'\u0000';(float)初始化为0.0F;(double)初始化为0.0;(boolean)初始化为false;(reference)引用类型初始化为null
六、封装
1、封装的概念
将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互
2访问限定符
Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认 知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:
private:被限定的数据只能在同一类中使用
default:被限定的数据只能在同一中使用
protected:被限定的数据只能在同一包或不同包的子类中使用
public:可以任意使用
什么时候下用哪一种呢?
我们希望类要尽量做到"封装", 即隐藏内部实现细节, 只暴露出必要的信息给类的调用者.
因此我们在使用的时候应该尽可能的使用比较严格的访问权限. 例如如果一个方法能用 private, 就尽量不要用 public
我们也可以直接将所有成员变量设置为private,将所有成员方法设置为public(不推荐)
3、包
(1)概念
为了更好的管理类,将多个类收集成为一组,组成的这个整体我们称之为包
(2)导入包中的类
Java中有很多现成的类供我们使用,使用之前只需将所需要的类导入即可,Java中有两种导入类的方法
直接导入:
通过import语句导入:
import语句只能导入类,不能直接导入一整个包;可以使用import static导入包中静态的方法和字段
七、static成员
1、static修饰的成员变量
static修饰的成员变量,称为静态成员变量,也称为类变量,不初始化程序也会给一个默认值
静态成员变量特性:
(1)不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
(2)既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
(3)类变量存储在方法区当中
(4)生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)
2、static修饰的成员方法
Java中,被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。静态成员一般是通过静态方法来访问的
静态方法特性:
(1)不属于某个具体的对象,是类方法
(2)可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者
(3)不能在静态方法中访问任何非静态成员变量
(4)静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用
3、类变量初始化
类变量初始化有两种方式:
(1)就地初始化:定义时直接赋值
(2)静态代码块初始化:
八、代码块
常见的有两种:构造代码块和静态代码块,构造代码块也叫实例代码块
练习:
调用main方法,图中各步骤执行顺序为:
4 -> 1 -> 5 -> 6 -> 2 -> 3
静态代码块先执行,并且只执行一次,在类加载阶段执行
当有对象创建时,才会执行实例代码块,实例代码块执行完成后,最后构造方法执行