黑马程序员__java基础视频day5

来源:互联网 发布:坚朗销售提成软件 编辑:程序博客网 时间:2024/05/22 02:11

---------------------- android培训、java培训、期待与您交流! ----------------------

第五天的视频是分两天看的,感觉看视频也是需要毅力的,当然啦时间也是十分重要的,想起接下来要交的作业就有些惶恐啊,视频怕是又要停几天了。第五天的视频主要讲的就是面向对象,其实我们现在用的都是面向对象编程了,本来想着这一天的就算了,没必要总结了,但是看看自己记在本子上的笔迹,好多,所以还是又总结下吧,要不然连着几天一起的又有好多内容了。

    面向过程注重的是动作,而面向对象注重的是对象,也就是把一系列的动作封装在一个实体类,直接调用实体来完成所需要的操作,就比如毕老师讲的那个例子,把大象装进冰箱,第一步,打开冰箱门,第二步,把大象放进冰箱,第三步,把冰箱门关上。这是以面向过程的思想来的。而倘若把这一系列动作都定义在冰箱内,那么把大象装进冰箱就变得简单多了,直接调用冰箱就可以完成了。
    类和对象的关系:类就是对现实生活中事物的描述,而对象就是对这类事物实实在在存在的个体。比如定义一个Person类,人都有姓名,性别,年龄,把这些共性抽象出来就组成了一个类,而对象就是我们这些实实在在存在的人。映射到java中,描述就是class定义的类,而对象就是对应java在堆内存new出来的实体。刚刚我们说的人有姓名、年龄这些属性就对应了类中的变量,而行为就对应了类中的函数。代码:Car c=new Car();Car c1=c;此时对于c1,在java中是不会再为c1在堆内存中开辟一个姓空间了,而是c与c1同时指向new出来的那个Car对象。
    成员变量与局部变量:成员在类中存在,它存在于对内存中,而局部变量存在于栈内存中,只存在与它的作用于之中。
    匿名对象:对于类Car:class Car{int num;String color;}在主函数中:new Car().num=5;new Car().color="blue";每一次new都会在堆内存中新开辟一块内存。匿名对象对调用属性时毫无意义的,调用方法才会有意义。如果对对象的方法只调用一次时,可以用匿名函数来完成,这样比较简化。如果对一个对象进行多个成员调用,必须给这个对象起个名字。匿名对象可以作为实际参数进行传递。
    封装:将属性私有化以后,类以外的即使建立了对象也不能直接访问。因此需要提供get和set方法来对外提供访问。
    构造方法:构造函数的特点,与类名相同,不用定义返回值类型,不可以写return语句。作用:给对象进行初始化。多个构造函数以重载的形式存在。当没有定义构造函数的时候,系统会默认提供一个空的狗展方法,当你自己有定义之后则系统不再提供默认的构造函数了,而此时你若没有定义空构造函数,但是却在主函数中调用类的空构造函数时,会有编译错误。构造函数与一般函数的区别,构造函数是给对象初始化的,只能运行一次。而一般方法是对象调用才执行的,可被调用多次。
    构造代码块:代码 :class Person{
private String name;
private int age;
{   
 System.out.println("Cry......");
}
}
则age后面用括号引起来的那一段代码成为代码构造块。起作用是给对象进行初始化,对象已建立就会运行,而且优先于构造函数执行。和构造函数的区别:构造函数代码块是给所有对象进行统一初始化的,而构造函数是给相应的函数进行初始化的。
    构造函数中有代码:name=name;虽然后者的name是构造函数中的参数,而前者是成员变量,但是事实上在java中,前者的name由于存在于构造函数中因此也被认为是构造函数中的name,所以当你调用此构造函数对对象初始化时,你会发现,值根本就没传进去。因此我们可以在前面的name前加this.来区分它是成员变量。
    this:代表本类对象,代表它所在函数所属的引用,简单说:哪个对象在调用this所在的函数,this就代表哪个对象。
    this的应用:当定义类中功能能时,该函数内部要用到调用该函数内部对象时,这时用this来表示这个对象,但凡本类功能中内部使用了本类对象,都用this表示。例如,在类中定义了一个内部函数:public boolean compare(Person p){return this.age==p.age;}在主函数中:p1.compare(p2);
    构造函数间的调用:this关键字。
Person(String name){this.name=name;}
Person(String name,int age){this(name);this.age=age}
第二个构造函数中的this(name);就是调用了前面的构造函数。
    初始化里面还有初始化动作时,先执行里面的初始化,再进行自己的初始化。因此,在构造函数的相互调用时,this语句只能用在构造函数的第一行。
    不允许两个构造函数内部相互调用,会形成死循环!
    今天的学习主要是对this关键字有了更多的了解,以前只会在构造函数里面使用,但却不知道它代表的是什么意思,看来我的基础一点也不牢固啊。
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima