前言
在前面的内容中我们已经掌握了变量和方法(函数)的语法及应用。然后在写样例代码的过程中大家应该也注意到了,我们所有的代码都是在class块里面的,我们前面也简单提到了class是什么东西。
那今天我们就来了解Java中非常非常重要的概念:类
在Java编程中,类(Class)是构建程序的基本构件之一。我们在最开始的时候就提到了java是面向对象的语言,而类是对象的模板,通过类去创建对象,类中定义了对象的属性(变量)和方法(行为)。
正文
语法
在Java中,使用class关键字去定义类,然后{}中为类体内容,类中可以声明变量和方法。
public class 类名称 { // 类的属性(变量) dataType 变量名称; // 类的构造方法 public 类名称() { // 初始化代码 } // 类的其他方法 public void 方法名() { // 方法体 }
}
命名规范
按照我们的开发规范,通常类名称首字母大写。然后采用大驼峰命名法,而变量名和方法名通常采用小驼峰命名法,也就是首个单词的首字母小写其余单词的首字母大写。
属性
在上面的语法中,我们可以看到在类中可以定义属性,也叫做变量。我们之前学习变量的时候实在main方法中去定义的,现在是定义在了方法外。
是的,变量可以定义在方法外,称为成员变量,而定义在方法内的变量称为局部变量。
而局部变量和成员变量的区别主要体现在作用域和生命周期上,成员变量的作用域是在整个类文件中的,而局部变量的作用域只体现在它所在的局部范围内,比如方法内。所以成员变量的作用域大于局部变量,在方法内也可以去调用成员变量。
至于他们详细区别,我们放在后面单独的章节中去进行详解。
构造方法
在语法中,有一段代码叫做构造方法,也叫构造函数。
它是用于在通过类去创建对象时初始化对象的属性的方法,简单说就是创建对象时给对象的属性进行赋值操作的方法。构造方法是一种特殊的函数。
当使用new
关键字创建类的实例时,构造方法会被自动调用,以初始化新创建的对象。
构造方法具有以下几个特点:
- 名称特殊:构造方法的名称必须与类名完全相同(包括大小写)。
- 无返回类型:构造方法没有返回类型,甚至连
void
都不写。 - 重载:和类的其他方法一样,构造方法也可以重载。这意味着一个类可以有多个构造方法,只要它们的参数列表不同。重载的概念后面再将。
- 初始化对象:构造方法的主要目的是初始化新创建的对象。你可以在其中为对象的属性设置初始值,或者执行一些必要的初始化步骤。
- 自动调用:当使用
new
关键字创建类的实例时,会自动调用相应的构造方法。
当我们在类中没有写构造函数的时候,类中会自动有个默认无参的构造函数。
但是当我们写了有参的构造函数后,那个默认无参的构造函数就不存在了,如果需要的话可以手动写上。
样例代码
我们在了解了类的语法后,现在去写一个demo。
比如我们想定义一个小狗的类,小狗通常都会给它取一个名字,然后小狗通常也有年龄,然后小狗有一些行为:它可以吃东西,可以叫“汪汪”
public class Dog {String name;int age;public Dog(String name, int age) {this.name = name;this.age = age;}public void say(){System.out.println("汪汪!!");}public void eat(){System.out.println("吃了一个鸡腿~");}
}
解释:
我们创建一个class,类名叫做Dog,然后狗的名字和年龄都是狗的属性,所以定义了两个变量,然后狗具有吃和叫的行为,所以定义了两个方法(函数)。
然后还有一个有两个参数的构造函数,通过这个构造函数取给类中的两个属性去进行赋值。
创建对象
创建对象通过关键字”new“。
语法:
对象类型 变量名 = new 对象类型();
其实和定义变量的格式差不太多,因为我们创建的对象需要赋值给一个变量,然后用变量去使用这个对象。
样例
那现在我们用这个类去创建对象
public class Dog {String name;int age;public Dog(String name, int age) {this.name = name;this.age = age;}public void say(){System.out.println(this.name + " 汪汪");}public void eat(){System.out.println(this.name + " 吃了一个鸡腿~");}public static void main(String[] args) {Dog wangcai = new Dog("旺财",3);wangcai.say();wangcai.eat();}
}
解释:
我们加了一个main函数作为程序的入口,然后创建Dog类的对象,因为在Dog类中定义了有两个参数的构造函数,所以使用new关键字创建对象的时候就会自动调用构造函数,所以我们创建对象时需要传两个参数去给到类里面的构造函数。如果我们在类中还定义了无参的构造函数,那么new对象的时候就可以不传参数,因为会自动调用类中无参的构造函数。
所以Dog wangcai = new Dog(“旺财”,3);这句的意思就是通过Dog类创建了一个对象wangcai,然后传了两个参数给Dog类的构造函数,所以这个wangcai对象中的name属性值就为”旺财“,age属性值就为3。
然后我们通过对象名去调用对象的方法。