类与对象
类与对象
面向对象语言
封装
将数据和对数据的操作封装在一起,通过抽象,从具体的实例中抽取共同的性质(属性和行为)形成一般的概念
继承:
- 子类可以继承父类的属性和行为(即数据和数据上的操作)
- 同时又可以增添子类独有的属性和行为
多态
- 向操作传递不同的消息,让对象根据相应的消息来产生相应的行为 如:求面积
- 同一个操作被不同类型的对象调用时产生不同的行为 如:不同动物的喊叫声
类
类声明
- 如果类名是拉丁字母,首字母大写
- 有多个单词复合时,每个单词的首字母大写 如:ChinaMade
类体
抽象的关键:抓住事物的属性和行为
属性通过变量来刻画,行为通过方法来实现
即方法操作属性形成一定算法来实现一个具体的的行为
类体的构成
- 变量的声明:用来储存属性的值 (体现对象的属性)
- 方法的定义:对类中声明的变量进行操作,即给出算法 (体现对象具有的具体行为)
成员变量
又名域变量
类型
Java中的任何一种数据类型
- 基本类型:整型、浮点型、字符型、逻辑类型
- 引用类型:数组、对象、接口
有效范围
在整个类中有效,与书写的先后顺序无关
建议:不分散书写,先属性后行为
编程风格
- 一行只声明一个变量,便于添加注释
- 变量名字除符合标识符规定之外,首单词首字母小写;多个单词组成,从第二个单词开始首字母大写
- 变量名要能见名知意,切忌将小写字母l和数字1相邻
方法
方法头
方法体
其中声明的变量和方法的参数被称为局部变量
和类的成员变量不同,局部变量只在方法内有效,且与声明位置有关
方法的参数在整个方法内有效,方法的局部变量从声明它的位置之后开始有效
局部变量声明在什么语句块中,就只在什么语句块内有效
区分成员变量和局部变量
局部变量若与成员变量名字相同,那么成员变量被隐藏,该成员变量在该方法内暂时失效
使用关键字this来使用被隐藏的成员变量
局部变量无默认值
成员变量有默认值,但局部变量没有,使用局部变量之前必须指定一个值
需要注意的问题
对成员变量的操作只能在方法中,不能直接在类中进行
1 | class A { |
类的UML图
分类
类的、接口的、泛化关系、关联关系、依赖关系、实现关系的UML图
构成
- 名字层
- 变量层
- 方法层
构造方法和对象创建
构造方法
可以有多个构造方法,但是参数的个数不同,或者参数个数相同但是参数列表中对应的某个参数的类型不同
如果没有编写构造方法,系统会提供默认构造方法,其无参数且方法体无语句
- 如果类定义了一个或多个构造方法,那么Java不提供默认构造方法
- 构造方法没有返回类型