实例化对象两个步骤:创建的过程
- 声明对象
public class CatTest{
public static void main(String [] args){
Cat one = new Cat();
这里的Cat one 就是声明对象,只是简单的在栈里面开辟了空间,却 不能真正的像对象一样我们 去使用他,只用实例化以后他才严格的算作一个对象;
}
}
- 实例化对象
public class CatTest{
public static void main(String [] args){
Cat one = new Cat();
这里的new Cat();就是实例化对象,他会在堆里面开辟空间,那么既然两者在不同的内存空间,又是如何关联起来的?
通过“=”赋值符号,将两者关联,那么怎样关联的呢?
就是将堆得内存地址存放到栈里面;
说白了对象就是一个房子,堆就是钥匙,栈就是保管钥匙的人,人拿到了钥匙以后,可以对房子这个对象进行使用
}
}
-当没有构造方法时,系统会自动添加无参的构造方法
-当指定了构造方法,不管是有参还是无参,系统都不会自动添加无参的构造方法
概括
就是声明对象,实例化对象,将声明的对象指向实例化对象的空间,每次new关键字
注意事项*
- 实例化对象只能通过new来创建吗 ?
public class CatTest{
public static void main(String [] args){
Cat one = new Cat();
Cat two = new Cat();
我们来分析 第一条:
Cat one = new Cat();
我们在栈里面开辟 了空间是one,在堆里面开辟了一片空间对one进行了初始化的操作,将堆得内存地址值保存在栈one里面;
Cat two = new Cat();
我们在栈里面开辟 了新的空间是two,在堆里面开辟了一片空间对two进行了初始化的操作,将堆得内存地址值保存在栈two里面;
Cat two = one;
当我们的两个对象同时指向一个内存地址值,只要修改一个对象,就会影响第二个对象
}
}
构造方法
俗称构造函数,构造器,我们通过构造方法来进行对对象的实例化。特点:
- 构造方法与类同名并且没有返回值
public class CatTest{
public CatTest (){
}
}
- 只能在对象实例化的时候调用
也就是只能配合new关键字来使用他,不能像常用的方法一样,我们执行完构造方法以后,完成对象的初始化,才走完new的整个过程; - 只要指定了构造方法,不管是有参还是无参,系统再也不会指定无参构造
- 一个类中可以有多个构造方法
单一职责原则
简单的说就是一个类只干一件事情,如果一个类当中,承担的职责越多,那么他的耦合交融高,那么被复用的可能性就低,所以以后创建类的人时候,建议一个类只负责一件事情
this关键字
代表当前对象,谁调用代表谁