201711671233《Java程序设计》第4周学习总结
一、教程学习内容总结
这周我们主要学习了类与对象,参数,变量,方法重载,包,访问权限。
(一)对象
1、声明对象:类名 对象名;
为对象分配变量:对象=new 构造方法;
2、使用对象
对象可以通过使用“ . ”来访问自己的变量和调用方法。如:
访问对象:对象.变量;
调用方法:对象.方法;
3、对象的引用和实体
对象(变量)负责存放引用。分配给对象的变量被称为对象的实体。
没有实体的对象称作空对象。空对象不能使用,即不能让一个空对象去调用方法产生行为。
一个类声明的两个对象如果具有相同的引用,二者就有完全相同的变量。
4、类与程序的基本结构
Java应用程序有一个主类,即含有main方法的类。Java应用程序从主类的main方法开始执行。
Java系统会自动地先编译主类需要的其他源文件。
Java程序以类为基本单位。
5、对象的组合
一个类的成员变量可以是Java的任何数据类型。一个类可以把某个对象作为自己的一个成员变量。该类的对象将其他对象作为自己的组成部分。
???6、组合与复用
如果一个对象a组合了对象b,那么对象a就可以委托对象b调用其方法,即对象a以组合的方式复用对象b的方法。
通过组合对象来复用方法也称为“黑盒”复用,因为对象只能委托所包含的对象调用其方法。当前对象随时可以更换所包含的对象。
对象数组:数组的元素是对象。
(二)参数
参数属于局部变量。方法被调用时,参数变量必须有具体的值。
方法的所有参数都是“传值”的。方法如果改变参数的值,不会影响向参数“传值”的变量的值。
对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别。
可变参数:指在声明方法时不给出参数列表中从某项开始直到最后一项参数的名字和个数,这些参数的类型必须相同。可变参数使用···表示若干个参数。
public void f(int …x) x是方法f的参数列表中的可变参数的“参数代表”。参数代表必须是参数列表中的最后一个。
for(声明循环变量:参数代表){
…
}
for语句的作用是:对于循环变量,依次取参数代表所代表的每一个参数的值。
(三)变量
1、成员变量分为实例变量和类变量。用static给予修饰的称作类变量。
2、实例变量与类变量的区别:
1)不同对象的实例变量互不相同。不同对象的实例变量占有不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的实例变量。
2)所有对象共享类变量。用new创建多个不同的对象时,分配给这些对象的这个类变量占有相同的一处内存,改变其中一个对象的类变量会影响其他对象的这个类变量。
3)通过类名直接访问类变量。如果该类没有创建对象,类中的实例变量不会被分配内存。类变量是和该类创建的所有对象相关联的变量。类变量可以通过某个对象和类名访问。实例变量只能通过该对象访问,不能通过类名访问。
(四)方法
类中的方法分为实例方法和类方法。加static(加在方法类型前面)修饰的是类方法。
一个类的方法可以互相调用,实例方法可以调用该类中的其他方法,类中的类方法只能调用该类的类方法。
区别:
1、对象调用实例方法。方法的入口地址被所有的对象共享。实例方法可以操作实例变量和类变量。
2、类名调用类方法。实例方法不能通过类名调用,只能通过对象调用。类方法只能操作类变量,不能操作实例变量。
3、不用创建对象就可以用类名直接调用static方法。
(五)方法重载
方法重载是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同。参数不同指:参数的个数不同。个数相同,但参数列表中对应的某个参数的类型不同。
方法的返回类型和参数的名字不参与比较。
(六)this,表示某个对象。
(可以出现在构造方法和实例方法中,不可以出现在类方法中)
1、在构造方法中出现this,代表使用改构造方法所创建的对象。
2、在实例方法中出现this,代表正在调用该方法的当前对象。
通常情况下,可以省略实例成员变量名字前面的this及static变量前面的类名。但当实例成员变量的名字和局部变量的名字相同时,成员变量前面的this或类名就不可省略。
3、实例方法可以调用类的其他方法,实例方法调用的默认格式是:this.方法;
类方法调用的默认格式:类名.方法;
this不能出现在类方法中。因为类方法可以通过类名直接调用,这时,可能还没有任何对象诞生。
(七)包
package声明包。package语句作为Java源文件的第一条语句。格式:package 包名;
省略package语句,被默认为无包名。
包名可以是一个合法的标识符,也可以是若干个标志符加“.”
分隔而成。
运行时,必须写主类的全名。使用了包名,主类全名是“包名.主类名”。
Java语言不允许使用java(这4个字母)作为包名的第一部分。
(八)import语句
1、引入类库中的类。系统自动为程序引入java.lang包中的类。
2、引入自定义包中的类。
3、无名包类也可以使用import语句来使用有名包的类,但有名包的类无论如何也无法使用无名包的类。
(九)访问权限
访问权限:指对象是否可以通过“.”操作自己的变量或通过“.”调用类中的方法。访问限制修饰符有private(私有),protected(保护),public(共有),用来修饰方法或变量。
实例方法可以操作该类中的实例变量和类变量,类方法可以操作该类中的类变量,与访问限制符没有关系。
不用private(私有),protected(保护),public(共有)修饰的变量和方法被称为友好变量和友好方法。
类只能用public和友好声明,不能用私有和保护。
访问权限高到低:public,protected,友好,private
二、教材中的问题与解决过程
关于组合和复用相关的地方不太懂,看了好几次,不知道我这样理解对不对:在B类中声明A类对象,A类对象在B类的类体中调用A方法?
三、代码调试过程中的问题与解决
尝试敲了一下课后的编程题,发现某些方法的方法体不会,这说明我需要多看几次书,理清知识点。
四、学习进度条
| 代码行数 (新增/累计) | 博客量 (新增/累计) | 学习时间 (新增/累计) |
目标 | 2500行 | 10篇 | 200小时 |
第一周 | 30 | 1 | 10 |
第二周 | 30/60 | 1/2 | 10/20 |
第三周 | 30/90 | 1/3 | 10/30 |
第四周 | 30/120 | 1/4 | 10/40 |
五、参考资料
Java2实用教程(第5版)