类和对象的创建和使用
面向对象 — 关于类和对象的创建和使用
文章目录
前言
类(Class)和对象(Object)是面向对象的核心概念。
类是对一类事物的描述,是抽象的、概念上的定义。
对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。
面向对象程序设计的重点是类的设计。设计类,就是设计类的成员。
这里给大家举一个简单的例子以便于更好的理解类和对象:
类 = 抽象概念的人;对象 = 实实在在的某个人
一、类的两个最基本的成员—属性和方法
刚刚上面提到,设计类就是设计类的成员。这里给大家简单介绍一下类的两个最基本的成员:属性和方法。
在Java语言中,类的属性(field),还可以叫做成员变量,或者域、字段。类的方法(method),还可以称为成员方法,在其他编程语言里,例如在C、JavaScript中,方法也被称为函数。
接下来给大家简单介绍一下二者的声明格式
1)属性的声明格式:
数据类型 变量名 = 变量值;
2)方法的声明格式:
权限修饰符 返回值类型 方法名(参数){
方法体;
}
注:方法的权限修饰符分为private、public、缺省和protected四种,具体细节就不在这里给大家展开,后续会为大家陆续更新此内容的讲解和使用。
二、类和对象的创建
1.类的创建
对于类的创建其实很简单,我们通过使用class关键字就可以创建一个类,其格式为:
class 类名{
}
结合上述类的设计的阐述,为大家展示一段代码,让大家更好的理解
代码如下:
//1.创建类,设计类的成员
class Person{
//属性
String name;
int age = 1;
boolean isMale;
//方法
public void eat() {
System.out.println("吃东西");
}
public void sleep() {
System.out.println("睡觉");
}
public void talk(String language) {
System.out.println("人使用" + language + "交流");
}
}
2.创建类的对象
在Java语言中,创建类的对象 = 类的实例化 = 实例化类。
对于类的对象的创建来说,我们从字面意义上可以理解,对象和类之间的关系是一种包含关系,也就是说首先需要创建类,然后在类声明完的提前下,才可以创建此类的对象。
对象的创建格式如下:
变量类型 变量名 = new 构造器();
注:这里有个关键的地方和大家说明一下,其实真正的对象是等号右边的new 构造器(),而不是“变量类型 变量名 = new 构造器(); ”这个整体,而“变量类型 变量名 = new 构造器();”表达的意思是将创建好的对象赋值给一个变量,而这个对象的赋值形式是一个地址值。
代码如下:
这里真正的对象是new Person(),Person p1 = new Person();是把new Person()这个对象的地址值赋值为变量类型为Person类型并且变量名为p1的变量。
// 2. 创建Person类的对象
Person p1 = new Person();
三、通过“对象.属性”或“对象.方法”调用对象的结构
类和对象创建完成,以及类中的属性和方法都已经声明好之后,我们就可以通过已经创建好的对象来调用其对应的类中已经声明好的属性和方法。
代码如下:
// 3. 调用对象的结构:属性、方法
// 调用属性:“对象.属性”
p1.name = "Tom";
p1.isMale = true;
System.out.println(p1.name);
// 调用方法:“对象.方法”
p1.eat();
p1.sleep();
p1.talk("Chinese");
整合上述所有代码如下示例:
代码如下:
public class test {
public static void main(String[] args) {
// 2. 创建Person类的对象
Person p1 = new Person();
// 3. 调用对象的结构:属性、方法
// 调用属性:“对象.属性”
p1.name = "Tom";
p1.isMale = true;
System.out.println(p1.name);
// 调用方法:“对象.方法”
p1.eat();
p1.sleep();
p1.talk("Chinese");
}
}
//1.创建类,设计类的成员
class Person {
// 属性
String name;
int age = 1;
boolean isMale;
// 方法
public void eat() {
System.out.println("吃东西");
}
public void sleep() {
System.out.println("睡觉");
}
public void talk(String language) {
System.out.println("人使用" + language + "交流");
}
}
输出结果为:
Tom
吃东西
睡觉
人使用Chinese交流
四、体会类的多个对象之间的关系
如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性。意味着:如果我们修改一个对象的属性a,则不影响另外一个对象属性a的值。(前提是类的属性是非static的)
注:如果未给对象的属性赋值,则输出的值为其数据类型的默认值。
代码如下:
Person p2 = new Person();
System.out.println(p2.name);// null
System.out.println(p2.isMale);//false
//将p1变量保存的对象地址值赋给p3,导致p1和p3指向了堆空间中的同一个对象实体
Person p3 = p1;
System.out.println(p3.name);// Tom
p3.age = 10;
System.out.println(p1.age);// 10
输出结果为:
null
false
Tom
10