Введение
В этом лабораторном занятии вы научитесь очень важному программированию паттерну: объектно-ориентированному программированию (object-oriented programming). Вам нужно знать разницу между классом (class) и объектом (object). Проводите больше практических занятий, чтобы лучше понять этот материал.
Класс и объект
Существует множество языков программирования и почти столько же стилей программирования (иногда называемых парадигмами). Программы, которые мы писали до сих пор, были в основном процедурными, так как акцент был сделан на описании вычислительных процедур. Большинство Java-программ являются объектно-ориентированными, что означает, что основной упор делается на объекты и их взаимодействие. Вот некоторые характеристики объектно-ориентированного программирования:
Объекты часто представляют сущности реального мира. Большинство методов - это методы объекта (например, методы, которые вы вызываете для объектов String), а не методы класса (например, методы класса Math). Методы, которые мы писали до сих пор, были методами класса. В этой главе мы напишем несколько методов объекта.
Объекты изолированы друг от друга путем ограничения способов их взаимодействия, особенно путем предотвращения доступа к экземплярным переменным без вызова методов. Классы организованы в иерархические деревья, где новые классы расширяют существующие классы, добавляя новые методы и заменяя другие.
В Java каждый класс расширяет какой-то другой класс, за исключением класса Object. Самым базовым классом является класс Object. Он не содержит экземплярных переменных, но предоставляет методы equals и toString, среди прочих.
Многие классы расширяют Object, в том числе почти все классы, которые мы писали, и многие Java-типы, такие как Integer, Double, String, массивы и т.д. Любой класс, который не явно указывает родительский класс, по умолчанию расширяет Object. "Дерево классов" называется иерархией классов. Класс Object обычно находится на вершине, а все дочерние классы - ниже.
Классы и объекты обычно имеют некоторые атрибуты, которые используются для описания этих классов/объектов, а методы используются для выполнения определенных функций. Здесь мы приведем пример, чтобы показать, как выглядит класс. Сохраните код в файл objectTest.java и запустите его с помощью командной строки.
Пример:
Напишите следующий код в файле /home/labex/project/objectTest.java:
// use keyword 'class' to create a new class named Person
class Person
{
/*
* there are four properties,
* name of string type, age of int type
* gender of string type, weight of float type
*/
private String name;
private int age;
private String gender;
private float weight;
// this is a constructor with no return type, the same name as the class, no parameters
public Person(){
}
//this is a constructor with two parameters
public Person(String name, int age){
// use parameters to set object's name and age
this.name = name;
this.age = age;
}
// this is a constructor with four parameters
public Person(String name, int age, String gender, float weight){
// use parameters to set object's name, age, gender and weight
this.name = name;
this.age = age;
this.gender = gender;
this.weight = weight;
}
// this is an object method
public void personInfo(){
System.out.println("Name: " + this.name + "\nAge: "+ this.age + "\nGender: " + this.gender + "\nWeight: "+this.weight);
}
}
public class objectTest{
public static void main(String[] args){
// use 'new' to create an instance of class Person
Person p = new Person("aaa",18,"male",50.5f); // p refers to an object
/* you can try these two different construction methods, and see what the output is.
* Person p = new Person();
* Person p = new Person("aaa",18);
*/
// use object to invoke method personInfo()
p.personInfo();
}
}
Вывод:
Запустите файл objectTest.java с помощью следующих команд:
javac /home/labex/project/objectTest.java
java objectTest
Посмотрите на вывод:
Name: aaa
Age: 18
Gender: male
Weight: 50.5
В классе Person есть четыре атрибута. Все атрибуты являются приватными, поэтому к ним нельзя обратиться извне (они могут использоваться только внутри класса). Есть один метод объекта с именем personInfo, который используется для вывода личной информации, и три конструктора с тем же именем, что и класс Person. Единственное различие между ними - это их параметры. Это поведение называется перегрузкой.
Резюме
Эта часть очень важна. Классы представляют собой абстракцию сущностей с общими характеристиками, а объекты - это сущности с конкретными характеристиками. Вам следует уделить больше времени для понимания вышеупомянутого стиля программирования.



