Java基础(五)面向对象

软件开发方式

面向过程

理解:一种较早的编程思想,顾名思义该思想是站在过程的角度思考问题,强调的就是功能行为,功能的执行过程:即先干啥后干啥,每一个功能我们都使用函数(方法),把这些步骤一步一步实现,使用的时候依次调用函数即可。

该设计最小的程序单元是函数,每个函数负责完成某一个功能用以接受输入数据,函数对输入数据进行处理,然后输出结果数据。

整个软件系统是由一个个的函数组成,其中作为程序入口的函数称之为主函数,主函数依次调用其他函数,普通函数之间可以相互调用,从而实现整个系统功能。整个过程可用下图概述:
在这里插入图片描述

面向对象

面向对象:一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同的对象里,强调的是具备某些功能的对象。
具备某种功能的实体,称为对象
面向对象最小的程序单元是:

面向对象的优势和特点

面向对象更加符合我们常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。

在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚。
面向对象的三大优势:封装,继承,多态

类和对象

什么是抽象

抽象:从特定的角度出发,从已经存在的一些事物中抽取我们所关注的特性,行为,从而形成一个新的事物的思维过程,是一种从复杂到简洁的思维方式

对象和类的关系

对象是人们要进行研究的任何事物,一切事物都可以认为是对象。
对象具有状态行为
状态:比如姓名,年龄,性别
行为:比如睡觉,吃饭,写代码等

类的定义

类:具有相同特性(状态)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。

类具有特性:对象的状态,使用成员变量来描述,封装数据
类具有功能:对象的行为,使用具体的方法来描述
在这里插入图片描述
其中name,age,height,weight,对应对象中的状态
而两个方法,则对应对象中的行为

对象基本操作

对象的创建和使用
对象的实例化过程

在这里插入图片描述
新创建的对象都在栈区,在堆中是对象的状态值

对象的生命周期

出生:每次使用new关键字的时候,就会在内存开辟新的空间,此时对象出生
结束:当堆中的对象,没有被任何变量所引用,此时该对象就成了垃圾,就等着垃圾回收器(GC)来回收该垃圾,当被回收的时候,对象就被销毁了,回收垃圾的目的是释放更多的内存空间

匿名对象

没有名称的对象,创建对象之后没有赋给某一个变量
new Person(); //匿名对象只是在堆中开辟一块新的内存空间,但是没有把该空间地址赋给任何变量,因为没有名称,匿名对象仅仅只能使用一次,一般的把匿名对象作为方法的实参传递。

构造器

构造器作用

  • 创建对象必须和new一起使用
  • 完成对象的初始化操作

构造器特点

  • 构造器的名称必须和当前所在类的名称相同
  • 禁止定义返回类型,千万不要使用void作为返回类型,void Student()这是普通方法
  • 在构造器中,不需要使用return语句:构造器是有返回值的,返回的是当前创建对象的引用。
  • 默认创建的构造器特点:根据类A是否使用public来决定构造函数是否使用public修饰符

构造器重载

可以重载构造器,使其可以添加参数

static修饰符

static修饰符表示静态的,可修饰字段,方法,内部类,其修饰的成员属于类,也就是说static修饰的资源属于类级别,而不是对象级别

static的真正作用:用来区别字段,方法,内部类,初始化代码块是属于对象还是属于类本身

类成员和特点

  1. static修饰的成员(方法/字段),随着所在类的加载而加载,当JVM把字节码加载进JVM的时候,static修饰的成员已经在内存中存在了。
  2. 优先于对象的存在:对象是我们通过new关键字创建出来的
  3. static修饰的成员被该类型的所有对象所共享(该类所创建的所有对象都可以共享该static成员)
  4. 直接使用类名访问static成员

类成员和实例成员的访问

类成员:使用static修饰的成员
实例成员:没有使用static修饰的成员

类成员只能访问类成员,实例成员只能访问实例成员

类成员通过类来访问
实例成员通过对象来访问

在static方法中,只能调用static成员
非static方法,可以访问静态成员,也可以访问实例成员

类成员的使用

好处:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份,可以直接被类名调用
弊端:生命周期过长

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值