类是一个引用数据类型,就涉及到内存分配的问题。
Java把内存空间划分为两种:
(1) 堆内存空间:保存真正的数据内容;
(2) 栈内存空间:保存堆内存的地址,可以理解为保存的是对象的名称。
注:一个堆内存可以被多个栈内存所指向(引用传递)。
接下来介绍每个类的组成部分以及结构:(按照编写类的顺序进行介绍)
(1) 属性(是在对象开辟堆内存时就开辟的空间。)
(2) 构造方法(是在使用关键字new的同时调用的。)
- 作用:构造方法的调用和对象的内存分配几乎是同步完成的,构造方法可以为类中的属性信息进行初始化处理。
- 构造方法本身属于方法,就可以进行重载。
说明:构造方法的名称就是类名称,重载只能实现参数类型或个数的不同。
代码示例:
public Person() {}//构造方法
public Person(String name) {
this.name=name;
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
- 匿名对象:不会被任何栈空间所指向,使用一次后就会成为垃圾被回收。
代码示例:
public class TestDemo{
public static void main(String[] args){
new Person("张三",20).getInfo();
}
}
注:使用关键字new直接产生一个实例化对象保存在堆内存中,但是该实例化对象不存在引用(也就是对象的名字)。
- 说明:每个类中构造方法至少存在一个,即使没有构造方法的定义,也会自动默认存在一个无参的构造方法。
(3) 普通方法(是在对象已经实例化完成了<空间开辟了,构造方法执行了>再调用的,可以调用多次。)
<参考第二篇博客文章对方法的介绍>
https://blog.csdn.net/weixin_41550144/article/details/86256813
类代码示例
class Person{//Person类
String name;//属性
int age; //属性
public Person() {}//构造方法
public Person(String name) {
this.name=name;
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void getInfo(){//普通方法
System.out.println("name="+name+",age="+age);
}
}
public class TestDemo{
public static void main(String[] args){
new Person("张三",20).getInfo();
}
}
运行结果:
name=张三,age=20
(欢迎批评指正!)