类与对象的关系
-
类是一种抽象的数据类型,是对某类食物的整体定义及描述,是一个概念体,比如cat类,person类,dog类。
-
对象属于抽象的概念的具体实例,例如李二是person类的一个对象,一只xxx的波斯猫是cat类的一个对象,一只xxx的田园犬就是dog类的一个对象。这些对象可以体现出具体的特点和功能,并非抽象的概念题。
创建与初始化对象
-
使用new 关键字创建对象,可以分配内存空间,给对象设置默认的初始化值,以及对类中构造器的调用。
-
实例:
- Student类:
//一个类里面只有属性的方法两样东西
public class Student {
//属性:也即是字段,变量。
String name;
int age;
//方法
public void study(){
System.out.println(this.name+"在学习");//当前这个里面的name字段
}
}
- 带有main方法的主类创建和调用Student类的对象:
//一个项目里只应存在一个main方法
public class Application {
public static void main(String[] args) {
//抽象类实例化,同时返回一个自己的对象
//student对象就是一个Student类的具体实例
Student student = new Student();
Student xiaobai = new Student();
System.out.println(xiaobai.name); //null
System.out.println(xiaobai.age); //0
xiaobai.name="小白";
xiaobai.age=3;
System.out.println(xiaobai.name); //小白
System.out.println(xiaobai.age); //3
xiaobai.study();
}
}
构造器
-
构造器:类中的构造器又称构造方法,进行创建对象时必须要调用,有如下两个特点:
- 1.和类的名字必须相同。
- 2.必须没有返回类型,也不能写void。
-
构造器的作用:
- 1.使用new关键字时,本质上是在调用构造器。
- 2.构造器一般用来初始化值。
-
定义了有参构造后,如果想使用无参构造,必须显式定义一个无参构造器,而不能用编译生成的。
有参无参构造器实例:
public class Person {
//类里面即使什么也不写,里面也会存在一个同名的方法,也即是构造器。
//从生成的class文件里可以看到
String name;
//显示的定义构造器
public Person(){
//无参构造器,可以用来实例化对象,赋初始值
//this.name="renmin";
}
public Person(String name){
this.name=name;
//一旦定义了有参构造,无参必须显示定义。意为原本自动生成的
//同名方法不见了,如果不在java文件中自己写出来,那么主类进行调用时
//便会出错。
/*
有参构造器。此处的this.name表示的是对象中本来就有的name字段
,也即是构造器外的String name。后面的name表示的是参数中传递进来的name
,也就是构造器中的参数String name。
*/
}
}
主类调用实例:
//一个项目里只应存在一个main方法
public class Application {
public static void main(String[] args) {
// new 实例化了一个对象
Person person = new Person("jiang");
System.out.println(person.name);
}
}
- alt+insert :生成构造器,选择constructer。也可以在下面选无参构造器。