第七天笔记
1:复习
1.1:面向过程和面向对象的区别
1.2:面向对象的分析过程
1:分析需求中的对象。
2:分析这些对象中的属性和行为
3:分析这些对象之间的关系。
1.3:类的组成部分:成员变量和成员方法。
1.3.1:成员变量与局部变量的区别
1:局部变量是定义在方法内或者代码块中,而成员变量是定义在类里面和方法外面,表示这个类的属性或者特征。
2:成员变量有默认值,而局部变量是没有,必须先赋值后使用。
3:成员变量的作用域是在整个类中,而局部变量在它所定义在的{}里面。
1.4:如何创建对象
类名 对象名 = new 类名();
1.5:如何访问对象的属性和方法。
属性:对象名.属性
方法:对象名.方法名()
1.6:构造方法。
1.6.1:构造方法的作用:对成员变量进行初始化。
1.6.2:构造方法与普通方法的区别
1:方法名上,构造方法与类名必须一致,而普通方法的方法名只需要符合标识符的命名规则即可。
2:返回值。构造方法在声明的时候是没有返回值的。而普通方法必须要有返回值,如果没有则需要写void.
3:作用上。构造方法的作用是对成员变量进行初始化的,而普通方法是为了解决某一些具体的功能。
4:调用上。构造方法是在创建的时候才会调用,其他的地方都不能调用。而普通方法要么用类去调用,要么用对象去调用。
1.6.3:注意事项:
1:凡是类都必须有构造方法,如果没有显式得写构造方法,那么会默认增加一个无参的没有方法体的构造方法,如果显式得写了构造方法,则不会增加无参构造方法。
2:构造方法也是方法,所以也可以有重载,那么创建对象的时候,根据传递过来的实参序列来调用相应的构造方法。
3:一般写构造方法,要么不写,要么就写一个空的构造方法,和一个有参构造方法,而这个参数的个数和类型跟成员变量的个数和类型是一致的。
2:内存分析。
内存一共分5个区域:其中寄存器和本地方法去跟硬件和系统相关,不用管它。还有三个区域:堆,栈,方法区。
2.1栈:存放局部变量,比如方法中的参数,方法中的变量,语句中的变量
堆:存放对象和数组(对象就是由类创造的,封装了数据的,也存放了变量,只不过是成员变量,这些成员变量被打包在一个对象里面了)
3:参数的传递
3.1:引用类型:传递的是地址,如对象作为参数传递的是地址
3.2:基本数据类型:传递的是内容(值),如int型作为参数不就是传一个数字吗?
4:this关键字
4.1:this:当前对象的引用。
4.2:this的用法
4.2:访问成员变量 this.成员变量名,有时候也可以不写this.当成员变量和局部变量发生冲突的时候,用this标识是成员变量。
4.3:访问成员方法 this.方法名().也可以省略.
4.4:this调用构造方法。 this():如果有参数需要传递参数。用this调用构造方法,这条语句必须放在构造方法中的第一条语句。不能用this递归调用构造方法,会陷入死循环。
4.5:注意:
普通方法不可以调用构造方法。
构造方法可以调用普通方法。
4.3:构造代码块.
4.3.1:在类里面方法外面定义的代码块就叫构造代码块。
4.3.2:如何执行的?:构造代码块是只要new一次,就执行一次。
Dog dog = new Dog( ); //执行顺序如下
1:先执行成员变量默认初始化
2:执行显式初始化
3:执行构造代码块初始化
4:执行构造方法初始化。
4.3.3:为什么需要构造代码块?它有什么作用?它跟构造方法有什么区别?
构造代码块是对这个类的所有对象进行统一的初始化。而构造方法是对某个对象进行初始化的。
5:面向对象的特征:继承,封装,多态
5.1:封装
封装的代码表现:成员变量私有化(用private修饰),提供公共的方法供外界访问。
有多少个成员变量,一般都会提供这个变量的set和get方法。方便外界调用.eclipse中快速创建get/set方法的方式:在写好成员变量后,执行菜单中 source –> Generate Getter and Setters 即可快速创建,source的快捷键是shift+Alt+s。