Java 类与对象
什么是对象
对象就是看得见摸得着的东西,万物皆对象
如何认识对象
任何一个对象都有其特征和功能,我们也是通过对象的特征和功能认识对象
什么是类
我们把具有某些相同特征和功能的对象归纳为类,类是对对象的抽象和描述,不是具体指某个对象或东西,类是看不见摸不着的,比如人类、狗、男人等。
类的作用
类的作用是作为模板或图纸用于建造同一类对象,比如想要修建一栋大厦,不可能不画设计图,一上来就开干。
如何定义类
public class 类名 {
属性(特征);
方法(功能);
}
-
public:是 Java 的一个访问修饰符,表明定义的类是公有类。访问修饰符的作用是用于控制类、属性和方法的访问权限,关于访问修饰符的更详细内容,后面我会单独讲解。这里需要记住的是,一个 Java 源文件只能包含一个公有类且文件名必须和公有类的类名相同
-
class:用于定义类的 Java 关键字
-
类名:同变量名或方法名一样,必须是一个有效的标识符;类名按照 Java 编码规范,要求首字母大写
类的属性和方法
类的属性
类的属性其实就是类描述对象的特征,在 Java 语言中也叫成员变量,之所以叫成员变量是因为它是类的一个成员,而且它本身也是一个变量。
需要注意的是,类的成员变量与方法的局部变量是有区别的,方法的局部变量是在方法中声明的变量,而类的成员变量是类中方法外声明的变量,所以它们二者的作用范围和生命周期是不同的,使用是要注意差异。
public class Car {
public String type =“sports car”;//车型
public int wheel = 16; //车轮
public int window = 6 ; //窗
public int door = 2; //门
public int engine = 1; //引擎
}
以上代码声明了 5 个属性或成员变量,而且分别进行了初始化;当然也可以不初始化,Java 语言会提供默认值。
类的方法
public class Car {
public void start ( ) {
System.out.println(“发动汽车”);
}
public void refuel ( int volume ) {
System.put.println(“ 汽车加油:”+ volume + “升”);
}
}
声明类的方法似于和我们之前声明的方法差不多,唯一不同的地方是少了一个 static 关键字。static 关键字到底是干嘛用的呢,这个还是要在等到后面详细讲解。
构造器概念
构造器(或构造方法)是类中用于实例化 Java 对象的一个特殊方法,该方法要求方法名必须和类名相同,且方法不具有任何返回类型
public 类名 {
...
}
默认构造器
默认构造器就是没有参数的构造器,有显式和隐式之分
-
显示默认构造器:指在类中声明的无参数构造器
-
隐式默认构造器:指由 Java 言语自动提供的无参数构造器
public class Car {
// 显式默认构造器
public Car () {
…
}
}
任何一个类必须要有一个构造器,否则就无法实例化对象,所以即使我们没有为类声明显示默认构造器,Java 言语也会提供隐式默认构造器。
当我们为类声明了显示默认构造器,实例化对象时就会使用显示默认构造器,而不会使用隐式默认构造器。
构造器重载
在 Java 语言中,普通方法可以重载,构造器虽然是特殊方法,但也支持重载。
我们先回顾一下,方法重载必须满足 4 个条件:
-
方法名必须相同
-
方法的返回值类型可以不同
-
方法的参数列表必须不同(参数类型、个数或顺序必须有一个不同)
-
方法的访问修饰符可以不同
public class Car {
public int door;
…
//显式构造器
public car ( ) {
System.out.println(“这是显式默认构造器”);
}
//构造器重载
public Car (int doorNum) {
door = doorNum;
}
}
以上代码重载构造器,为类添加了一个构造器。
实例化对象
实例化对象就是使用类去创建对象的过程,好比通过图纸修建大厦的过程。
类名 对象名 = new 构造器;
-
new:是 Java 关键字,用于实例化对象(在内存堆区开辟空间保存对象)
-
构造器:通过调用类的某个构造器才能实现实例化对象
-
对象名:可以使用对象名来间接调用对象(保存对象的引用)
Car car = new Car(); //调用显式默认构造器实例化对象
Car car2 = new Car (2);//调用重载构造器实例化对象
对象的使用
Java 对象的使用就是访问(或调用)对象的属性和方法
-
对象名.属性
-
对象名.方法
Car car = new Car();
car.door;
car.start();
对象的销毁
对象的销毁就是释放对象占用的内存空间,Java 语言 采用的是 GC 垃圾回收机制,它可以自动回收不再使用的对象,Java 程序员就只需要关注对象的实例化,而不用关注对象的销毁。
GC 回收的对象已经释放掉其占用的内存空间,就不能再使用,否则就会导致运行时错误(或程序崩溃)。