面向对象之类与对象
面向对象与面向过程:
面向对象:围绕的是这个软件是由哪些部分完成的,或者说是由哪些对象来做的
面向过程:我要解决问题,我要做哪些事情,它的完成流程是怎样的.就问题解决问题
面向对象:
属性:是指对象身上有什么数据,对象是由什么组成的
行为:是对象可以做什么,或者我们想要这些对象做什么
什么是对象:
万物皆对象,对象因关注而产生
什么是类:
抽象出对象的属性和行为,按此标准将对象分类,类就是一类事物的统称,类实际上就是一个分类的标准,符合这个分类标准的对象都属于这个类
类是生成对象的模板,是对象的蓝图
类和对象的关系:
类是对象的抽象,对象是类的实例
类是具有相同属性和行为的一组对象的集合
在软件系统中,我们用类来模拟现实生活中的实体
类是模板,不能直接使用.对象才是具体的实际存在,所以对象又被称之为某个类的"实例"
书写Java类:
一个.java文件只能有一个公用(public)类,文件名必须与公用类的类名相同
定义一个类:
定义类的本质就是在定义一种数据类型
类可以是一种比基本数据类型复杂的多的数据类型,它由属性和行为组成
属性可以是多个,而且各有各的数据类型
行为是类自带的方法,可以直接完成各种属于该类的对象的操作
属性:
属性是类身上的值数据,其形式就是变量属性和常量属性
变量属性:
声明语法采用的是变量的语法,只是比之前的变量多一个访问修饰符
在效果上,该类的所有的对象都会自动具备该属性,但是哥哥对象可以有各自不同的值
常量属性:
声明语法采用的是常量的语法,只是比之前的常量多一个访问修饰符
在效果上,该类的所有的对象都会自动具备该属性,只是值都一样,且不能更改
行为:
在语法表象上,就是方法的定义
它是类的组成部分,表示对象能够做什么事,提供什么功能
在面向对象中,目前学习中不使用static
产生对象的语法(实例化):
数据类型 变量名 = new 类名();
等号左侧,产生一个4字节的空间,用于存放右侧产生的对象的引用.称之为"对象名空间"
等号右侧,产生一个新的对象,该对象具备一个整体的空间存放各个属性,此空间的大小由对象身上的属性大小总和决定 --> ==数据类型大小
属性的默认初始值:
基本数据类型为:0
引用数据类型为:null
调用对象(属性和方法):
"."操作符,表示某个对象的某个属性或方法
对象.属性 || 对象.方法
对象的销毁:
是由Java中的垃圾回收(Garbage Collection)来完成的
NullPointerException空指针异常 --> 企图调用一个空对象的属性和方法
它有其自身的算法规则,程序员是没有办法通过代码控制的:控制它什么是否回收,回收什么
在垃圾回收的众多算法中有一条基本规则:它会主动回收没有引用指向的对象
所以:
1.如果想让某个对象在程序途中被回收,那么我们可以主动的把它指向的引用赋值为null
2.如果对象的引用变量(对象名空间)是个局部变量,那么当它所属的模块执行结束,这个变量的生命周期就到头了,变量会消失,那么它所指向的对象也就没有引用指向,也会被回收
3.程序员在代码级别只有一句代码可以和垃圾回收之间产生交集,这句代码是System.gc();
注意:这句代码的作用不是主动调用垃圾回收,而是召唤垃圾回收,但是垃圾收不收,什么时候收还是由它自身的算法决定
4.匿名对象生存即死亡
访问修饰符:
一共有3个关键字,4种情况
现在我们只掌握2种:public,private
public 修饰的属性或方法,可以在任意位置访问
private 修饰的属性或方法只能在本类中访问
变量属性基于java官方规范,应该定义为private,然后提供get/set方法,让外部操作取值/赋值
get方法被称之为:访问器
set方法被称之为:修改器
两者在格式和命名上,都有标准规范
当全局变量(属性)和局部变量重名的是否,会默认使用局部变量
在这种情况下,要特指全局变量(当前类的对象),需要在全局变量前使用this关键字
此时的this.相当于生活中每个对象说的"我",指的是当前对象
this的好处:
在开发中,提高开发效率
建议:凡是访问本类中当前对象的属性和行为,都养成写this的习惯