一、类与对象的关系
1、类
类是一种抽像的数据类型,它是对某一类事物整体描述/定义,但并不能代表某一个具体的事物。
- 动物、植物、电脑……
- Person类、Pet类、Car类等。这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为。
2、对象
对象是抽像概念的具体实例
- 张三就是人的一个具体实例。
- 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。
二、创建与初始化对象
使用nerw 关键字创建对象时,除了分配内存空间之外,还会给创建好的对象进行默认初始化以及对类中构造器的调用。
类的构造器也称为构造方法,事在进行创建对象的时候必须要调用的。
默认初始化
public class Student{
// 属性(字段)
String name;
int age;
// 方法
public void study(){
System.out.println(this.name+"在学习");
}
}
//一个项目应该只有一个main方法
public class Application{
public static void main(String[] args){
// 类 抽象类,实例化
// 类实例化后会返回一个自己的对象
// student对象就是一个Student类的具体实例。
Student student = new Student();
System.out.println(student.name); // null,String类型赋值前默认null
System.out.println(student.age); // 0,int类型赋值前默认为0
student.name = "张三"; // 此时给student的name属性赋值
System.out.println(student.name); // 张三
}
}
构造器
构造器有以下两个特点:
- 必须和类的名字相同
- 必须没有返回类型,也不能写void
public class Person{
String name;
// 一个无参构造,一个不写也会存在于类中的方法
// 构造器的作用就是 实例化初始值
public Person(){
this.name = "你的笔友李华"; // 在初始化时就给name赋值
}
}
public class Book{
String name;
// 类中默认会有一个无参构造,可以不用手动定义
public Book(){
}
// 有参构造:一旦定义了有参构造,无参构造必须显式定义
// 可以理解为方法的重载
public Book(String name){
this.name = name;
}
}
public class Application{
public static void main(String[] args){
// new 实例化一个对象
Person person = new Person(); // 使用new关键字,本质是在调用构造器
System.out.println(person.name); // 你的笔友李华
// 由于在构造器中已给name赋值,所以person.name不是null
Book book1 = new Book();
Book book2 = new Book("《活着》");
System.out.println(book1.name); // null
System.out.println(book2.name); // 《活着》
}
}