我发现记录心得并不能帮助我复习。所以还是写一点课堂笔记总结之类的会比较好。
国庆之后只上了一节课,是“面向对象”这个大的模块的后半部分。我记得老师在实验课交给我们的c++改写java风格的代码中,我十分频繁的使用this来对当前对象进行赋值,却没有很好的理解他的意思,经过这一节课我逐渐理解一切()
总结下来,this的第一种用法就是我再实验课上使用的,对当前对象的引用,比如初始化时形参和成员变量名字重复了,用this可以很好的分辨出来。第二种表示当前对象。这个理解起来有点点复杂,老师举了一个例子,在类中传递对象,this表示当前对象,就作为参数传过去了,具体有什么作用呢,我觉得这个在继承中可能有较大的作用,比如同时进行父类和子类的定义,直接传父类的属性过去,可以相当多的减少子类重复定义的部分,如果理解的不对,也希望有人指正(估计没有)。第三种是当前类的构造方法。一个类中有许多可能重名方法,他们的功能是传递性的,this可以在继承了上个方法的基础上,在加上新的方法或者定义。
之后还有super,访问父类属性用的,就比如父类是“爸爸”,子类是“儿子”,儿子继承了爸“名字
这一属性,但他们名字肯定不一样。这时候在子类中定义了儿子的名字,爸爸的名字就会被隐藏
(父类数据成员隐藏),要使用,就得用super.name,super是所谓显式调用,这个名字起的很妙,super“显化”父类属性。
嘛,大概就是这些了。写个博客就相当于帮我复习了所学内容,以前怎么没发现这么个好方法捏。
第四次作业:
1.对象:对一类事物的抽象化,该对象有自己的属性、方法等等;对象引用:引用对象和指针类似,会改变该对象的属性,可以理解为作为实参传递过去,修改地址等一并修改。
例子:book A=new book();//A.name="富婆的电话号码";
changename(A);//public void changename(book A){A.name="好好学习";}
结果A.name变为 好好学习
2.java中对象是引用变量,传参时传递该对象的值,方法中对对象的所有修改都会造成对堆中对象的修改。例子同上。
3.java对象成员初始化顺序:先静态变量,后成员变量;先父类对象,后子类对象;先成员变量,后对象中的方法。
例子: class A{
int num1=1;
string name;
static int num2=2;//先于num1定义。
public void init(string Name){name=Name;}//后于成员变量num1,num2定义。
class AA extends A{
int num3=3;//后于A定义。
}
}
4.static:静态方法。不依赖于任何对象就可以进行访问,static定义的变量不依附于任何对象,在静态方法中不能访问类的非静态成员变量和非静态成员方法。但是非静态方法可以访问静态变量。static变量:静态变量,被所有对象共享,在内存中只占有一个地址,当且仅当在类初次加载时被初始化,并且只执行一次。
例子:class A{
int num=1;
public static void print(){System.out.print("???");}
}
public class Main{
A a=new A();
public void static main(){a.print();}
}
5.final关键字:修饰变量。final修饰过的变量,只能进行一次赋值操作,此后不可以改变它的值。final修饰基本类型的时候,起到常量作用,基本类型的值不可被改变。final修饰引用类型时,不能再指向其他对象。
例子:class A{
final int UnBreakable=1;
public void change(){
Unbreakable=2;
}
会报错。
6.错。不可直接定义数组变量长度。
7.基本类型数组:数组元素值直接存储在数组中。引用类型数组:数组存储的还是引用,该数组中元素均指向另一块内存,这块内存中才是真正数据。
}
}



