Java基础(五)面向对象
文章目录
软件开发方式
面向过程
理解:一种较早的编程思想,顾名思义该思想是站在过程的角度思考问题,强调的就是功能行为,功能的执行过程:即先干啥后干啥,每一个功能我们都使用函数(方法),把这些步骤一步一步实现,使用的时候依次调用函数即可。
该设计最小的程序单元是函数,每个函数负责完成某一个功能用以接受输入数据,函数对输入数据进行处理,然后输出结果数据。
整个软件系统是由一个个的函数组成,其中作为程序入口的函数称之为主函数,主函数依次调用其他函数,普通函数之间可以相互调用,从而实现整个系统功能。整个过程可用下图概述:
面向对象
面向对象:一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同的对象里,强调的是具备某些功能的对象。
具备某种功能的实体,称为对象
面向对象最小的程序单元是:类
面向对象的优势和特点
面向对象更加符合我们常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。
在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚。
面向对象的三大优势:封装,继承,多态
类和对象
什么是抽象
抽象:从特定的角度出发,从已经存在的一些事物中抽取我们所关注的特性,行为,从而形成一个新的事物的思维过程,是一种从复杂到简洁的思维方式
对象和类的关系
对象是人们要进行研究的任何事物,一切事物都可以认为是对象。
对象具有状态和行为:
状态:比如姓名,年龄,性别
行为:比如睡觉,吃饭,写代码等
类的定义
类:具有相同特性(状态)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。
类具有特性:对象的状态,使用成员变量来描述,封装数据
类具有功能:对象的行为,使用具体的方法来描述
其中name,age,height,weight,对应对象中的状态
而两个方法,则对应对象中的行为
对象基本操作
对象的创建和使用
对象的实例化过程
新创建的对象都在栈区,在堆中是对象的状态值
对象的生命周期
出生:每次使用new关键字的时候,就会在内存开辟新的空间,此时对象出生
结束:当堆中的对象,没有被任何变量所引用,此时该对象就成了垃圾,就等着垃圾回收器(GC)来回收该垃圾,当被回收的时候,对象就被销毁了,回收垃圾的目的是释放更多的内存空间
匿名对象
没有名称的对象,创建对象之后没有赋给某一个变量
new Person(); //匿名对象只是在堆中开辟一块新的内存空间,但是没有把该空间地址赋给任何变量,因为没有名称,匿名对象仅仅只能使用一次,一般的把匿名对象作为方法的实参传递。
构造器
构造器作用
- 创建对象必须和new一起使用
- 完成对象的初始化操作
构造器特点
- 构造器的名称必须和当前所在类的名称相同
- 禁止定义返回类型,千万不要使用void作为返回类型,void Student()这是普通方法
- 在构造器中,不需要使用return语句:构造器是有返回值的,返回的是当前创建对象的引用。
- 默认创建的构造器特点:根据类A是否使用public来决定构造函数是否使用public修饰符
构造器重载
可以重载构造器,使其可以添加参数
static修饰符
static修饰符表示静态的,可修饰字段,方法,内部类,其修饰的成员属于类,也就是说static修饰的资源属于类级别,而不是对象级别
static的真正作用:用来区别字段,方法,内部类,初始化代码块是属于对象还是属于类本身
类成员和特点
- static修饰的成员(方法/字段),随着所在类的加载而加载,当JVM把字节码加载进JVM的时候,static修饰的成员已经在内存中存在了。
- 优先于对象的存在:对象是我们通过new关键字创建出来的
- static修饰的成员被该类型的所有对象所共享(该类所创建的所有对象都可以共享该static成员)
- 直接使用类名访问static成员
类成员和实例成员的访问
类成员:使用static修饰的成员
实例成员:没有使用static修饰的成员
类成员只能访问类成员,实例成员只能访问实例成员
类成员通过类来访问
实例成员通过对象来访问
在static方法中,只能调用static成员
非static方法,可以访问静态成员,也可以访问实例成员
类成员的使用
好处:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份,可以直接被类名调用
弊端:生命周期过长