面向对象与面向过程的区别?
面向过程是一种以过程为中心的编程思想,就是分析出解决问题所需的步骤,然后通过函数将步骤一步步实现,使用的时候依次调用就可以了。如:组装自行车
面向对象是一种以对象为中心的编程思想,我们只在乎该对象具备的属性与行为,至于怎么实现的步骤我们不关心。如:购买自行车
类与对象的理解?
类就是从不同维度描述某一类事物,如鞋类,人类等等。
对象就是某一类事物的具体的一个个体,也叫做实例
如何设计一个类
设计一个类我们一般通过抽取该类共有的属性和行为来进行设计,如学生类:
学生拥有姓名、性别等属性和具备学习等行为
//学生类
public class Student{
//姓名
String name;
//性别
String sex;
//学习
void study(){
System.out.println("学习中");
}
}
堆栈内存分析
当通过Student stu1 = new Student();
语句创建对象时,会在堆内存中开辟内存空间存放对象实体,并调用构造方法;
同时栈内存中会声明一个变量stu1来存放对象的引用地址,引用地址指向堆中对应的对象实体
public class App{
public static void main( String[] args ){
Student stu1 = new Student();
stu1.name = "张三";
stu1.sex = "男";
Student stu2 = new Student();
stu2.name = "小红";
stu2.sex = "女";
}
}
构造方法
构造方法就是用于构造对象的方法,有以下几点特征:
- 类中如果没有显式存在的构造方法,必定存在一个隐式无参构造方法;若有显式构造方法,隐式构造方法将不复存在;
- 构造方法没有返回值
- 构造方法名与类名一致
- 构造方法不能使用static修饰,不用优先加载
- 可以有访问权限修饰符
- 构造方法可以有多个(参数不同),可理解为方法重载
匿名对象
匿名对象就是没有名字的对象,没有变量名接受的对象
匿名对象有以下几个特征:
- 只能被调用一次,下一次就找不到了
- 可作为一次性参数传递
- 可作为返回值返回
对象的生命周期
- 开始:从调用构造方法创建对象开始
- 结束:
- ①失去引用,等待jvm回收
- ②jvm强制回收