Java的重要概念之一类
一、类的定义
定义
类:类是一个模板(本质是一种数据类型,若对C语言有所了解可简单理解成struct结构体,区别在于Java的类可包含方法,而结构体没有),它描述一类对象的行为和状态。
对象:对象是类的一个实例(这里的对象不是女朋友),有状态和行为。例如,狗是一个这个名词是一个类的概念,你家喂养的旺财就是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类的使用
1.定义类语法格式 :
[final] [public] class 类名 {
成员;
构造方法;
// 如果是程序的主方法在这个类时,一般没有构造函数,行为方法中包含主方法(静态);
行为方法;}
2. 定义类时需要注意的点
- 类的包含哪些成员和方法,
- 这些成员和方法是允许使用实例进行直接调用、是否为静态、是否被重写等,根据需求选择修饰语主要包括public、protected、private、static、final等
3. 类的分类
- 普通类:不包含被abstract修饰的抽象方法;能被实例化
- 抽象类:包含被abstract修饰的抽象方法(定义抽象类时,抽象方法只需声明,无须实现方法);不能被实例化
4. 普通类与抽象类的区别
- 都可被继承;若继承后的子类包含抽象方法(定义子类时重新声明的抽象类;不会是继承而来,因为继承而来的抽象方法必须要被子类实现),并且为对抽象方法实现,则这个子类依旧是一个抽象类
- 抽象类需要可被继承(不能被继承这个抽象类就没有了实际意义)、并且不能是静态类,即不能被static、final修饰
5. 抽象类与接口的区别
- 强调一点,很多人喜欢区分抽象类和接口的区别,实际上这连个是完全不同的概念,这里还是简单说一区别吧
- 定义时,修饰符不同;抽象类 abstract class ,接口 interface
- 抽象类和接口中都可以有成员变量,但是接口中的成员变量必须使用public、static、final修饰。
- 接口中只能包含抽象方法(默认接口中的方法为抽象方法,即使没有使用abstract修饰方法);抽象类中可以存在非抽象类。抽象方法不能再原定于接口或抽象类中直接实现,需要继承后实现这些抽象方法
- 抽象类只能被单继承使用关键字extends,因为其本质还是类;接口可以被多继承,使用关键字implements,多继承接口时使用逗号隔开。
- 一个子类可以同时继承一个类(包含抽象类)和多个接口,继承顺序为类先继承,再继承接口,若下图
6. 类中的成员变量和局部变量
成员变量 | 局部变量 | 备注 | |
---|---|---|---|
类中为位置不同 | 在类中方法外 | 在类中的方法中或方法的形参 | |
内存存储位置不同 | 在堆中 | 在栈中 | 内存堆、栈的区别 |
生命周期不同 | 随对象的建立而创建,随对象一起消失 | 随所在方法的被调用而生成,随调用方法的结束而结束 | |
初始化值不同 | 有默认值,构造函数(包含默认构造函数) | 无默认值,必须程序赋值或调用时参数赋值才能使用 |
二、对象的创建
定义
类定义完成后,真正实用的是利用该类创建其对象,对象的创建需要消耗一定资源,尤其内存资源。
对象具体使用
1. 语法格式:
类名 对象名 = new 类名([参数]);
备注: 对象名好比C语言里面的指针;对象真正的内容是后面new的部分,在堆中申请一段空间;对象名指向段空间的地址