面向对象
-
面向对象的概念
- 面向对象:虚拟世界“模拟现实”生活,必须保证模拟一致
- 面向过程:必须按照顺序逐步完成。
- 类:对统一类事物的抽象的描述,不是具体的
·人类、动物 - 对象:万物皆对象,具体实例
·某个事物 - 类与对象的关系
·抽象和具体的关系 - 属性:描述对象的特征。
· 颜色、尺寸…… - 方法:对象做的事情
·吃饭、睡觉…… - 类对象的属性和方法形成类
-
编写类
-
语法格式:
·[修饰符] class 类名{}
-
-
编写属性:属性编写在类中
- 语法格式
·[修饰符] 数据类型 属性名称 [=值]
·[]中可有可无
·属性名成也是标识符,驼峰命名
·当成员变量不赋值时有默认值。
整数类型默认值为 0
浮点类型默认值为 0.0
字符类型默认值为 \u00
布尔类型默认值为 flase
字符串类型为 null
- 语法格式
-
编写方法
- [修饰符] 返回类型 方法名称 ([参数列表]){
方法体
}
·方法必须在类中
·在面向对象中方法的修饰符编写为 public
- [修饰符] 返回类型 方法名称 ([参数列表]){
-
编写测试类
- 包含main方法
-
创建对象(实例化)
- 语法格式:
类名 引用名称 = new 类名 (); - 一个类中可以创建多个实例
- 语法格式:
-
访问对象中的属性和方法
- 访问对象中的属性语法格式:
· 引用名称.属性名称; - 对对象中的属性进行赋值语法格式:
·引用名称.属性名称=值; - 访问对象中的方法语法格式:
·引用名称.方法名称();
- 访问对象中的属性语法格式:
-
成员变量和局部变量的区别:
*成员变量在类中定义
*局部变量在方法中定义,其中形参也属于局部变量
*成员变量没有赋值时有初始值
*局部变量没有初始值
*在同一个类中,局部变量可以和成员变量名称相同,局部值优先
如果要访问成员变量,则必须加this -
对对象中的属性赋值
*使用引用名称.属性名称=值;
*使用构造方法完成 -
构造方法
-
作用:完成对属性的赋值
-
定义:是一种特殊的方法
构造方法名字必须和类一样
没有返回值,也不编写void -
语法格式:
·public 方法名称([参数列表]){}
-
构造方法如何执行?
·自动执行相匹配的构造方法 -
构造方法的分类:
·隐式构造方法
·在一个类中,没有手动编写的构造发放,则系统会提供一个默认的无参的构造方法
·显示构造发放
·在一个类中,手动编写构造方法,则系统不会提供默认的方法。
·建议在手动编写构造方法前,先编写一个无参构造方法
-
-
构造方法的重载:
·同一个类中,构造方法可以名称相同,但参数列表必须不同。- 变量按数据类型分类
·用户自定义类(引用数据类型)
·int…
·系统类(基本数据类型)
·String…
·对引用数据类型赋值的方式
·第一种:对象赋给引用名称
·s = new student();
·可多次赋值更改
·第二种:将一个null赋给引用名称
·s = null
- 变量按数据类型分类
-
空指针异常
- 属于运行错误,java.lang.NullPointerException
- 原因:当引用名称为null时,就不能访问某个对象的方法或属性,如果非要访问就出现空指针异常
- 解决办法:在访问前保证该引用名称中存放对象的地址
-
封装
- 面向对象的三大特征:
·封装、继承、多态 - 封装
·定义:隐藏类的内部信息。不允许外部程序直接访问,而是通过方法进行操作
·封装步骤:
·第一步:将属性设置为私有的private,只能在本类中使用
·第二步:编写对应属性的赋值和取值方法
- 面向对象的三大特征:
-
this关键字
·this表示当前对象,也即是说当前谁调用了这个方法,这个对象就是谁
·this关键字可以访问本类中的属性
·当局部变量和成员变量不同名时,编写属性名等价于this.
·当局部变量和成员变量同名时,必须用this
·this可以访问本类中的实例方法
·方法名称([参数列表]);等价于this.方法名称
·this可以访问本类中的其他构造方法
·this() ——访问本类中的无参构造方法
·this([参数列表])
·此时当使用this访问本类中的构造方式时,则只能写在构造方法中,且必须是第一条语句。
·构造方法不能出现递归调用。