1.1 专栏介绍
主要内容
Java学习之旅的第二季主要涉及Java中面向对象的语法,涉及到众多关键字及理论点,是进一步学习Java的基础。
适合人群
有基本的Java语法基础,可以先阅读Java学习之旅第一季-Java基础语法
计算机相关专业的在校大学生
学习目标
理解类与对象的概念和关系、掌握类的声明与对象的创建、掌握属性的声明与访问、掌握方法的声明与调用、理解方法的传参方式、掌握构造方法的声明与调用、理解类的继承及实现语法、理解抽象类与接口以及如何使用、掌握方法重载与重写的语法、掌握密封类的使用语法、掌握内部类的声明与使用、理解枚举的特点及使用语法、理解记录的特点及使用语法、理解OOP的特征
开发环境
本专栏中的开发环境为:Windows 11专业版,Oracle JDK 25, IntelliJ IDEA 2025.2.2 (Community Edition)
1.2 面向对象编程
面向对象编程(Object-Oriented Programming),简称 OOP,是当今占主导地位的编程范式,已经取代了 20 世纪 70 年代开发的“结构化”或过程式编程技术。由于 Java 是面向对象的,所以要熟练使用 Java,就必须熟悉面向对象编程。
面向对象编程以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石。
传统的结构化编程包括设计一组过程(或算法)来解决问题。一旦确定了这些过程,传统上的下一步就是找到合适的方式来存储数据。这是为何Pascal语言的设计者尼古拉斯·沃斯(Niklaus Wirth)将其著名的编程著作命名为《算法 + 数据结构 = 程序》的原因。在沃斯的书名中,算法排在首位,数据结构排在其次。这反映了当时程序员的工作方式。首先,他们确定处理数据的程序;然后,他们决定对数据施加何种结构以使处理更简便。而面向对象编程则颠倒了这一顺序:先考虑数据,然后考虑用于操作数据的算法。对于较小的问题,将它们分解成一系列步骤的方法效果非常好。但是对于较为复杂的问题,使用对象的方法更为合适。
使用面向对象编程时对象之间相互通信,并且作为它们交互的结果计算出有用的结果

1.3 类与对象的概念与关系
人类认识世界首先是具体的个体,随后会对相同特征和行为的个体进行分类,比如:动物、植物。
同样的,Java语言将分类的概念抽取成类,将其特征和行为就使用为类的属性和方法表示。
而类的具体个体则称之为对象或实例
Java中除了类之外,还有接口、枚举、记录、注解等可以独立存在的语法形式,后续会一一介绍。
类与对象的关系都是是怎么样的呢?
类(Class)是模板,对象(Object)就是模板的具体实现,对象也称为实例(Instance)
下面的示意图中,左边的Car就是小汽车的模板,通过模板就能创建很多不同的小汽车对象,比如右边的Audi、NIssan、Volvo等。
如何用面向对象的思维来描述世界呢?下面有一张图。

第一步:发现类
世界上有形形色色的动物,人类通过观察和研究,发现有一些动物具有相同的特征(主要是生物学特征),就将其归类为某种动物,如上图中的狗。一旦归类之后,就可以抽象出类的概念。比如上图中的动物可以成为"狗"类。
第二步:发现类的属性
如果想对狗进行描述,就可以找出它们公共的特征。如:品种、毛色等。这些可以作为类的属性。
第三步:发现类的方法
同样的,要能描述它们的行为,如看门、犬吠等,可以在类中设计对应的方法,在方法中实现具体的行为。
1.4 类的声明
Java中声明类需要使用关键字class,基本语法如下:
[修饰符] class 类名{
//类成员
}
上面的语法中,修饰符放在中括号里表示可选,Java支持众多的修饰符,后续会一一介绍。最常用的一个修饰符是与访问控制有关的 public,后面我创建的类默认都是public类。
类名后的大括号不可省,大括号内就是该类的成员,包括:
- 属性
- 方法/构造方法
- 代码块/静态代码块
- 内部类/枚举/接口/注解/记录等
下面举一个具体的例子,声明一个类表示"狗"类:
package com.laotan.article1;
/**
* @author 老谭
*/
public class Dog {
}
上面代码第1行首先声明了类所在的包,一段文档注释之后,就是正式的类声明。以下对第6行进行说明:
- public 是类声明时最常用的修饰符,意思是公开的,可以被项目中其他代码访问。public类所在的文件名要与类名完全相同。如果要改名,使用IDEA提供的重构(Refactor)功能,而不要直接在文件中像修改字符串一样修改类名。
- class 是用于声明类的关键字,注意是全小写
- class 后就是类的名称,类名的命名规则可以参考Java学习之旅第一季-3:Java程序初体验
以上我们就声明好了一个Dog类,虽然暂时没有什么功能,但下一步就可以对Dog实例化了。
1.5 类的实例化
声明的类可以理解为自定义数据类型,使用类声明的变量即为其类型的变量,可以称为实例或对象,为了给这个变量赋值,我们需要使用类创建一个对象,这个过程通常称为类的实例化(instantiation)
类的实例化目的有两个:
- 在内存中分配空间
- 为属性赋值
语法:
类名 实例名; // 只声明不赋值,没有创建对象,没有实例化
类名 实例名 = new 构造方法( ); // 声明且赋初始值,创建了对象,进行了实例化
这里的 new 就是用于类实例化的关键字,当然之前我们也使用它进行了数组的创建。
new 后面紧跟构造方法,构造方法是Java中的一个重要且特殊的方法,目前先记住其语法规则,后续专门阐述,它的命名规则是:名称与类名完全相同,后面跟上小括号(可以有参数)
假如我们要使用Dog类创建一个具体的Dog(家里的二哈),按照语法,可以使用如下的代码:
Dog erHa = new Dog();
可以看到,这句话其实很类似声明变量并赋初始值,只不过初始值不是字面量,而是使用new关键字调用类的构造方法创建的实例(对象)。
变量的命名规则可以参考Java学习之旅第一季:7-变量
这句代码我们仍然把它放在 main 方法中,如果方便起见,可以就在Dog类中实现main方法:
package com.laotan.article1;
public class Dog {
static void main() {
Dog erHa=new Dog();
}
}
如果要正式一点,可以单独实现一个测试类,在测试类中的main方法中编写测试代码,测试类的名称我以带测试的类名加上Test结尾,就和带测试的类放在一起:
public class DogTest {
static void main() {
Dog erHa = new Dog();
}
}
后续我都采用第二种写法,将实现逻辑的类和测试类分开实现。
此时我建好了两个类,Dog类和DogTest类,Dog类表示"狗"类,DogTest中有入口方法main方法。
Java中的一个类最多只有一个main方法,也可以没有main方法,此时该类没有入口,不能直接运行,只能被其他类使用。
Java项目中允许多个带有main方法的类,运行时选择其中一个作为入口就行。
1.6 null 对象
null(读音nʌl)在Java中既是一个特殊的引用类型,也是该类型的唯一对象。它的特点如下:
- 没有名称,因此不能声明该类型的变量
- 该类型只有一个值,用 null 表示,日常交流通常称为空对象
- null 可以赋值给任意引用类型的变量
- 不可赋值为基本数据类型,也不可与基本数据类型比较
下面使用两种不同的写法,体会下它的作用:
Dog dog;
Dog dog = null; // 将 null 对象赋值给变量dog
第 1 行代码只声明了变量dog但没有给它赋初始值,那么在使用 dog前必须赋初始值,否则会有编译错误。
第2行代码不仅声明了变量dog同时赋值始值是 null,就算后面使用它,编译也不会出错,但是在运行时访问其属性或方法会抛出 NullPointerException(NPE,即空指针异常)。
1.7 小结
本小节是Java学习之旅的第二季的开篇,重点讲解面向对象编程(OOP)的概念。通过具体案例(如Dog类)演示类的声明、实例化(new关键字)和对象使用,帮助读者掌握如何声明类及如何实例化类。特别讲解了null对象的特性及空指针异常问题,为后续深入学习Java打下坚实基础。

被折叠的 条评论
为什么被折叠?



