一、开篇
在编程的世界里,Java是一种面向对象的编程语言,其概念有类、对象、抽象,特征为封装、继承、多态。面向对象核心概念就是“类”和“对象”。今天,我们将通过一个简单的实战项目,深入探讨Java中的类和对象,帮助大家更好地理解和运用它们。
那么我们又怎么将面向对象的编程语言与现实结合,或者说怎么将现实代码化?
以上简单概括说:
对象表示现实世界中某个具体的事物;
类是对一类(或某个)对象的抽象,是与对象有共同特征的描述。
二、类与对象的基本概念
类(Class):类是对象的模板或蓝图,它定义了对象的基本结构和行为。类可以理解为一种数据类型,它包含了数据成员(变量)和方法成员(函数)。
对象(Object):对象是类的实例。当我们根据类创建一个具体的实体时,这个实体就是一个对象。对象具有类定义的属性和行为。
三、类与对象的常用方法介绍
1.get 和 set 方法的介绍
get 和 set 方法是用于访问和修改类的属性的常用方法,使用get和set方法有多个原因,以下是一些主要的原因:
封装性:使用get和set方法可以隐藏对象的内部状态,防止直接操作对象的属性。这样可以提高代码的封装性和安全性。通 过使用get和set方法,可以控制对对象属性的访问和修改,从而更好地保护对象的内部数据。
灵活性:使用get和set方法可以使代码更加灵活,方便进行扩展和维护。如果需要添加新的属性或修改现有的属性,只需要 修改相应的get和set方法即可,而不需要修改整个类的代码。此外,通过在get和set方法中添加额外的逻辑,可以实现一 些特殊的功能,例如属性的校验和过滤等。
一致性:使用get和set方法可以保证对象属性的命名和访问方式的一致性。这样可以提高代码的可读性和可维护性。同时, 通过使用标准的命名约定,可以使代码更加清晰易懂。
安全性和性能:使用get和set方法可以防止程序直接操作对象的属性,从而避免一些潜在的安全问题。此外,通过在get和 set方法中进行一些性能优化,可以提高程序的运行效率。
位置 | Private | 默认 | protected | public |
本类 | 可见 | 可见 | 可见 | 可见 |
同包中的类或子类 | 不可见 | 可见 | 可见 | 可见 |
其他包中的类 | 不可见 | 不可见 | 可见 | 可见 |
其他包中的类 | 不可见 | 不可见 | 不可见 | 可见 |
使用get和set方法可以提高代码的封装性、灵活性、一致性、安全性和性能。因此,在面向对象编程中,我们一般使用get和set方法来操作对象的属性。
2.构造方法的介绍
构造方法在面向对象编程中起着非常重要的作用,主要有以下几个原因:
强制性要求:构造方法是对象创建时必须调用的方法。当使用“new”关键字创建一个对象时,会自动调用该对象的构造方法。 如果没有定义任何构造方法,编译器会默认生成一个。
初始化对象:构造方法的主要任务之一是初始化对象。通过在构造方法中设置对象的属性值,可以确保对象在创建时具有正确 的初始状态。
传递参数:构造方法允许在创建对象时向对象传递参数。这些参数可以用于初始化对象的属性或执行其他必要的操作。
实现多个构造方法:通过定义多个构造方法,可以实现多态性,使得子类可以根据需要选择调用哪个构造方法,从而实现不同 的初始化逻辑。
继承与封装:在面向对象编程中,构造方法是实现封装的关键。通过控制对象的创建和初始化过程,可以隐藏对象的内部实现 细节,只暴露必要的方法和属性,提高代码的安全性和可维护性。
四、实战项目:学生管理系统
为了更好地理解类和对象的概念,我们将创建一个简单的“学生管理系统”。这个系统将包括以下功能:添加学生信息、查看学生信息、修改学生信息和删除学生信息。
1.定义类和创建方法
定义学生类
public class Student {
private String name;
private int age;
private String major;
}
构造方法
//无参构造方法
public Student() {
}
//有参构造方法
public Student(String name, int age, String major) {
this.name = name;
this.age = age;
this.major = major;
}
get 和 set 方法
// Getter方法
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getMajor() {
return major;
}
// Setter方法
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setMajor(String major) {
this.major = major;
}
在这个类中,我们定义了三个私有成员变量(name、age和major),以及一个构造方法和一组get和set方法。这些方法用于获取和设置对象的属性值。构造方法用于创建具有指定属性值的学生对象。
2. 使用学生类创建对象并检验
无参构造方法创建对象
// 无参构造方法
Student student1 = new Student();
//利用set方法设置三个值
student1.setName("Alice");
student1.setAge(20);
student1.setMajor("Computer Science");
//利用get方法查询并打印结果
System.out.println("姓名:"+student1.getName()+" 年龄:"+student1.getAge()+" 专业:"+student1.getMajor());
运行结果:
有参构造方法创建对象
// 创建学生对象并初始化属性值
Student student2 = new Student("Bob", 21, "Mathematics");
System.out.println("姓名:"+student2.getName()+" 年龄:"+student2.getAge()+" 专业:"+student2.getMajor());
运行结果:
五、总结
通过本文的实战项目,我们深入了解了Java中的类和对象的概念及其在实际编程中的应用。类是对象的模板,定义了对象的属性和方法;而对象是类的实例,具有类定义的特性。掌握类和对象是学习Java编程的基础,也是迈向更高级编程技能的关键一步。
完整代码
public class Student {
private String name;
private int age;
private String major;
//无参构造方法
public Student() {
}
//有参构造方法
public Student(String name, int age, String major) {
this.name = name;
this.age = age;
this.major = major;
}
// Getter方法
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getMajor() {
return major;
}
// Setter方法
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setMajor(String major) {
this.major = major;
}
}
public class StudentSystemDemo {
public static void main(String[] args) {
// 无参构造方法
Student student1 = new Student();
//利用set方法设置三个值
student1.setName("Alice");
student1.setAge(20);
student1.setMajor("Computer Science");
//利用get方法查询并打印结果
System.out.println("姓名:"+student1.getName()+" 年龄:"+student1.getAge()+" 专业:"+student1.getMajor());
// 创建学生对象并初始化属性值
Student student2 = new Student("Bob", 21, "Mathematics");
System.out.println("姓名:"+student2.getName()+" 年龄:"+student2.getAge()+" 专业:"+student2.getMajor());
}