Java面向对象编程思想之类与对象实例详解
在Java中,所有的事物都是对象,对象都有其自身的特征和行为。因此,Java是一种面向对象的语言。在Java中,类和实例是很重要的概念,我们需要对其进行深入的学习和理解。
类和对象
类是一种模板或蓝图,可以用来创建对象。具有相同属性和行为的对象,可以归纳为同一个类。对象则是类的一个实例,可以根据类来创建多个对象。
定义类
类通常由属性和方法构成。属性是对象的特征,方法是对象的行为。在Java中,定义一个类可以如下所示:
public class Person {
// 属性
private String name;
private int age;
// 方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
}
在上面的代码中,我们定义了一个名为Person
的类,它有两个属性,分别是名字和年龄,以及四个方法,分别是设置名字、获取名字、设置年龄和获取年龄。其中,名字和年龄都设置为private,表示只能在类内部访问。
创建对象
要使用一个类,需要先创建该类的一个对象。可以使用如下方式来创建一个Person对象:
Person person = new Person();
在上面的代码中,我们创建了一个名为person
的Person对象。可以通过对象的引用来访问该对象的属性和方法,例如:
person.setName("Tom");
person.setAge(18);
System.out.println(person.getName() + " is " + person.getAge() + " years old.");
在上面的代码中,我们设置了person
对象的名字为Tom
,年龄为18
,并打印出了该对象的名字和年龄。
继承
继承是面向对象编程中的一个重要概念,它允许一个类继承另一个类的属性和方法。这使得代码更加简洁、可重用和易于维护。
定义子类
子类可以继承父类的属性和方法,并且还可以定义自己独有的属性和方法。可以使用如下方式来定义一个子类:
public class Student extends Person {
// 独有的属性
private String major;
// 独有的方法
public void setMajor(String major) {
this.major = major;
}
public String getMajor() {
return this.major;
}
// 覆盖父类的方法
@Override
public String getName() {
return "Student: " + super.getName();
}
}
在上面的代码中,我们定义了一个名为Student
的子类,它继承了Person
类的所有属性和方法,并添加了一个独有的属性名为major
和两个方法setMajor
和getMajor
。可以看到,子类可以访问父类的name
和age
属性,因为它们都是继承来的,而不需要重新定义。
创建子类对象
可以使用如下方式来创建一个Student对象:
Student student = new Student();
student.setName("Alice");
student.setAge(20);
student.setMajor("Computer Science");
System.out.println(student.getName() + " is a " + student.getMajor() + " student.");
在上面的代码中,我们创建了一个名为student
的Student对象,并设置了它的名字、年龄和专业。然后打印出了该对象的名字和专业。需要注意的是,我们在子类中覆盖了父类的getName
方法,因此在打印名字时会输出Student: Alice
。
示例
下面给出两个示例说明类和对象的使用:
示例1
假设我们要写一个程序,计算一组数的平均值。可以创建一个名为Numbers
的类,其中包含一个计算平均值的方法:
public class Numbers {
private int[] numbers;
public Numbers(int[] numbers) {
this.numbers = numbers;
}
public double average() {
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
return (double) sum / numbers.length;
}
}
在上面的代码中,我们定义了一个名为Numbers
的类,它包含一个私有属性numbers
和一个公有方法average
,该方法用于计算数组numbers
的平均值。
然后,可以在另一个类中创建一个Numbers
对象,并调用其average
方法来计算平均值:
int[] numbers = {1, 2, 3, 4, 5};
Numbers number = new Numbers(numbers);
double average = number.average();
System.out.println("The average is " + average);
在上面的代码中,我们创建了一个名为number
的Numbers
对象,并传入一个长度为5的数组。然后调用了该对象的average
方法来计算平均值,并打印出结果。
示例2
假设我们要写一个程序,用于存储和管理一个学生数据库。可以创建一个名为Student
的类,其中包含名字、学号和性别等属性,以及增删改查等方法。
public class Student {
private String name;
private String id;
private String gender;
public Student(String name, String id, String gender) {
this.name = name;
this.id = id;
this.gender = gender;
}
public String getName() {
return this.name;
}
public String getId() {
return this.id;
}
public String getGender() {
return this.gender;
}
public void setName(String name) {
this.name = name;
}
public void setId(String id) {
this.id = id;
}
public void setGender(String gender) {
this.gender = gender;
}
}
public class StudentDatabase {
private ArrayList<Student> students = new ArrayList<Student>();
public void add(Student s) {
students.add(s);
}
public void remove(Student s) {
students.remove(s);
}
public void update(Student s) {
for (int i = 0; i < students.size(); i++) {
if (students.get(i).getId().equals(s.getId())) {
students.set(i, s);
break;
}
}
}
public Student search(String id) {
for (int i = 0; i < students.size(); i++) {
if (students.get(i).getId().equals(id)) {
return students.get(i);
}
}
return null;
}
}
在上面的代码中,我们定义了两个类Student
和StudentDatabase
。在Student
类中,我们定义了三个私有属性name
、id
和gender
,以及各自对应的获取和设置方法。
在StudentDatabase
类中,我们定义了一个私有属性students
,其中存储了所有的学生信息。同时,还定义了增、删、改、查等方法,可以对学生信息进行增删改查。
然后可以在另一个类中创建一个StudentDatabase
对象,并使用其增删改查等方法来操作学生数据库:
StudentDatabase db = new StudentDatabase();
db.add(new Student("Alice", "001", "female"));
db.add(new Student("Bob", "002", "male"));
System.out.println(db.search("001").getName());
db.update(new Student("Alice", "001", "male"));
db.remove(db.search("002"));
在上面的代码中,我们创建了一个名为db
的StudentDatabase
对象,并向该对象中添加了两个学生信息。然后使用该对象的search
方法来查找学号为001
的学生,并打印出其名字。接着使用update
方法来更新该学生的性别,并使用remove
方法来删除学号为002
的学生信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java语言面向对象编程思想之类与对象实例详解 - Python技术站