教学内容总结
第四章(上)
面向对象语言的特征:
封装性 继承 多态
类命名编程风格:
1.若类名使用拉丁字母,则名字的首字母使用大写字母
2.类名最好容易识别,见名知意
类的目的是抽象出一类事物共有的属性和行为
类体的内容由变量的声明和方法的定义组成:
变量的声明:用来存储属性的值(体现对象的属性)
方法的定义:方法可对类中声明的变量进行操作,即给出算法(体现对象所具有的行为)
成员变量的类型:
整型、浮点型、字符型、逻辑类型、引用类型、数组、对象和接口
成员变量的有效范围:
在整个类内都有效,与在类体内的书写位置无关
成员变量编程风格:
1.一行只声明一个变量
2.变量的名字除了符合标识符规定外,名字的首单词的首字母使用小写,若由多个单词组成则用驼峰习惯
方法头:
由方法的类型、名称、名称后的一对小括号及其中的参数列表所构成
int add(int x,int y,int z) //有参的方法头
方法体
区分成员变量和局部变量:(详见课本P56)
- 若局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即该成员变量在这个方法内暂时失效
class Tom{
int s=10,int y;
void f(){
int x=5;
y=x+x;//y=10,此处x=5
}
}
2.若想使用被隐藏的成员变量,则必须使用关键字this
class Tom{
int s=10,int y;
void f(){
int x=5;
y=x+this.x;//y=10,此处x=5,this.x=10
}
}
需要注意:
对成员变量的操作只能放在方法中
class A{
int a;
float b;
a=12;//非法,这是赋值语句(语句不是变量的声明,只能出现在方法体中)
b=12.35f;//非法
}
UML图:
- 属于结构图,常被用于描述一个系统的静态结构
- 包含类、接口、泛化关系、关联关系、依赖关系、实现关系的UML图
- 顶部第一层是名字层(若类的名字是斜体字形则该类是抽象类)(抽象类详见第五章)第二层是变量层 “变量名字:类型” 第三层是方法层“方法名字(参数列表):类型”
构造方法:
- 当程序用类创建对象时需使用它的构造方法
- 类中的构造方法的名字必须与它所在的类的名字完全相同,没有类型
- 类中可有多个构造方法,但参数必须不同(参数的个数不同;若参数个数同,参数列表中的某个参数的类型不同)
- 若类中没有编写构造方法,系统默认该类只有一个构造方法,且无参及方法体中无语句
- 若类定义了一个或多个构造方法,则Java不提供默认的构造方法
对象声明格式:
类名 对象名;
为声明的对象分配变量:
创建对象即使用new运算符和类的构造方法为声明对象分配变量
对象内存模型(详见课本P60)
注意:
若类中定义了一个或多个构造方法,则不能利用默认构造方法来创建对象
使用对象(体现对象的属性):
对象.变量;
对象调用类中的方法(体现对象的行为):
对象.方法
对象的引用和实体:
- 避免使用空对象(若使用空对象则程序在运行时会出现异常)
- 同个类中的两个对象可进行赋值操作
object2=object1;
- 垃圾收集:
若“垃圾收集”机制发现二者具有相同的实体,检测某个实体不再被任何对象所引用,就释放实体占有的内存
基本数据类型参数的传值:
只能向较高类型传递一个较低的值
引用类型参数的传值:
当参数是引用类型时,“传值”传递的变量是变量中存放的“引用”,而不是变量所引用的实体
可变参数:
在声明方法时不给出参数列表中从某项开始直至最后一项参数的名字和个数,但这些参数的类型必须相同
public int getSum(int…x)
int sum=0;
for(int i=0;i<x.length;i++){
sum=sum+x[i];
}
Return sum;
}
也可使用以下语句遍历参数代表所代表的参数
for(声明循环变量:参数代表){
……….
}
for(int param:x){
sum=sum+param;
}
代码调试中问题和解决方法
这周敲的代码大多都按课本上的代码敲的,但是这章的概念有点多,容易混乱,按照课本打代码时甚至会打漏部分代码在这之后花费了一些时间找错误
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/1 | 10/10 | |
第二周 | 300/500 | 1/2 | 15/25 | |
第三周 |
442/942 | 1/3 | 26/51 | (不要再当咸鱼了!!!) |
第四周 | 620/1120 | 1/4 | 10/61 |