面对对象
类和对象的理解
类:1.类是用来描述事物
2.类是抽象的
3.类可以理解为一个模板,是属性和方法的集合
4.java中用class来描述类
5.类是java当中最基本的组成单位
6.类就是用来组织代码(方法归类)封装数据(属性封装)的
对象:1.对象一定是客观存在的,是具体的
2.万事万物都是对象
3.对象是在类的基础上创建的
4.对象又称为实例/引用/变量
类的定义:
java中用class描述类
成员变量表示就是事物的属性
成员方法表示就是事物的行为
格式
[访问权限修饰符]class类名{
成员变量
成员方法
}
如何创建一个对象:类名 对象名=new 类名();
如何访问一个对象:
访问对象的属性:对象名.属性
访问对象的方法:对象名.方法名()
成员变量和局部变量的区别
1.定义的位置不一样
成员变量:定义在类体以内,方法体以外
局部变量:方法的声明生(形参),或者方法体内
2.内存的位置不一样
成员变量:在堆区分配内存空间
局部变量:在栈区分配内存空空
3.初始值不一样
成员变量:成员变量默认有初始值,系统会赋予如下初始值
byte short int long 0
float double 0.0
boolean false
char u0000
引用类型 null
局部变量:默认没有初始值
4.生命周期不一样
成员变量:随着对象的创建而创建,随着对象的销毁而销毁
局部变量:随着方法的调用而创建,随着方法的销毁而销毁
5.当成员变量和局部变量重名的时候,局部变量优先(就近原则)
匿名对象:本质就是没有名字的对象
特点:
1.匿名对象没有名字
2.匿名对象只能够调用一次
3.由于匿名对象使用完毕之后立刻就成为垃圾对象,等待垃圾回收器在空闲的时候回收垃圾
一般可以节约内存资源,在java中应用少,在android应用多
也可以简化编程[参数传递]
什么是垃圾对象?
1.匿名对象
2.对象被赋值为null
3.对象所在的方法调用完毕
4.当主方法调用完毕
5.当对象被重新new
封装
private关键字:它本质是一个访问权限修饰符,用来放置外界访问成员变量
封装步骤:1.给需要封装的成员加上访问权限修饰符(private)---防止外界直接通过,直接访问成员
2.对外界提供公共的访问方法(set/get方法)---提供外界对内部成员的访问通道
3.在读写方法中添加数据校验代码---可以对成员的访问提供数据控制(看需求可选择)
为什么需要this关键字?
-----当局部变量和成员变量重名的时候需要使用this
this本质就是一个变量/地址/实例/引用,表示当前对象
this理解
1.创建任何一个对象,都会默认创建一个this变量指向同一个堆区的空间
2.this的设计理念代表代词 我的 概念,只能够出现在类的内部
3.this可以完全理解为一个引用,一个本类的实例,或者本类的对象
4.默认访问内部类的成员变量或者成员方法,都会省略一个this
5.this本身就代指当前对象,谁调用this本身就是谁
构造方法:本质就是一个方法而已,只不过能够帮助我们初始化成员
好处:1.能够快速初始化成员
2.能够在堆区为对象分配空间
格式:[访问权限修饰符] 方法名(参数列表){
方法体;
}
特点:1.构造方法没有返回值,连void都没有
2.构造方法的方法名必须和类名保持一致
3.构造方法用来给成员快速初始化
4.如果你没有书写无参构造方法,系统会默认帮我们编写一个无参构造方法
5.如果你一旦编写了一个带参构造方法,就会覆盖系统写的无参构造方法
6.养成一个好的习惯:书写每个类都必须显示定义无参构造方法
无参构造方法的意义:
1.为一些不需要外界传入的成员赋值,同时会在对象创建的时候初始化
2.如果你一旦编写了一个带参构造方法,就会覆盖系统写的无参构造方法,当你再使用无参构造方法的时候会编译报错
3.反射中大部分都是创建无参构造方法,很多框架都是利用反射,所以如果你不提供无参构造方法,很可能框架报错
构造方法本质还是方法,可以方法重载