一、面向对象入门
1、面向过程编程
开发一个个的方法,有数据要处理了,就把数据交给方法
2、面向对象编程
开发一个个对象,有数据要处理了,就把数据交给对象,再调用对象的方法来完成对数据的处理
二、深刻认识面向对象
1、面向对象的好处
面向对象编程更加符合人类的思维习惯,可以让编程更简单、更直观
2、程序中的对象是什么
①对象实际是一种特殊的数据结构
②可以把对象看成是一张具体的数据表,表中记录什么数据,对象就处理什么数据
3、怎么得到对象
①对象是通过类得到的:类名 对象名 = new 类名();
②类可以理解成对象的设计图,或者是对象的模板
③对象可以理解成是一张数据表,而数据表中有哪些数据,是由类来设计的
④结论:一定要先设计类,然后再使用类生成具体的对象
4、有了对象如何访问对象的属性和方法
①访问属性:对象名.属性名
②访问方法:对象名.方法名()
三、对象在计算机中的执行原理
①以Student s1 = new Student();为例
②每次new Student(),就是在堆内存中开辟一块区域,用来存储一个学生对象
③s1变量里面记住的是学生对象的地址------因此s1是引用数据类型
④成员变量(name、price)的数据放在哪里,存在于哪个位置?------数据是放在对象中的,因此存放在堆内存中
四、类和对象的一些注意事项
1、类名建议使用英文单词,首字母大写,满足驼峰模式,且要有意义,达到见名知意的效果,比如:Student、Car...
2、类中定义的变量也成为成员变量(即对象的属性),类中定义的方法也称为成员方法(即成员的行为)
3、成员变量本身存在默认值,同学们在定义成员变量时一般来说不需要赋初始值(没有意义),成员属性默认值规则:
4、一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须成为代码文件名
5、多个变量指向同一个对象,需要注意:一个变量对对象做了修改,其他变量看到的都是被修改后的结果
6、如果某个对象没有任何变量指向它,需要注意什么?
①当堆能存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的"垃圾"
②Java存在自动垃圾回收机制,会自动清除掉垃圾对象,程序员不用操心
五、this关键字
1、this是什么
this就是一个变量,可以用在方法中,用来拿到当前对象,哪个对象调用方法,this就指向哪个对象,也就是拿到哪个对象
2、this的应用场景
用来解决对象的成员变量与方法内部变量的名称一样时,导致访问冲突问题的
六、构造器
1、作用
用来初始化对象,并返回对象的地址
2、定义构造器的结构
修饰符 类名 (参数列表) {具体的代码}
3、格式:new 构造器名()
4、构造器的分类
①无参数构造器
初始化对象时,成员变量的数据均采用默认值
有了对象之后,再调用成员变量为对象进行赋值
②有参数构造器
在初始化对象的时候就自动为对象属性进行了赋值
5、构造器的注意事项
①构造器的名字必须和类名保持一致
②定义构造器的时候一定不能写返回值类型,void也不行
③任何类定义出来,默认自带无参构造器,写不写都有
④一旦定义了有参构造器,无参构造器就没有了,此时就需要自己写无参构造器了
七、封装
1、封装是什么
①是面向对象三大特征(封装、继承、多态)之一
②用类设计对象处理某一个事物的数据时,把要处理的数据,以及处理这些数据的犯法,设计到一个对象中去
2、设计规范
八字口诀:合理隐藏、合理暴露
3、如何更好的封装
①合理隐藏:把成员属性用private关键字进行一个修饰,修饰后就只能在当前类中进行访问了
②合理暴露:必要的时候为成员变量提供public修饰的getter、setter方法暴露其取值和赋值
③成员方法根据是否需要在当前类外面决定使用private隐藏还是使用public对外暴露
④封装的一个好处是让数据更安全,不对外直接暴露数据本身,同时也不需要对外暴露方法的实现细节
⑤示例:
public class Student { private int age; public void setAge(int age) { if (age >= 0 && age <= 200) { this.age = age; } else { System.out.println("您输入的年龄数值有误!"); } } public int getAge() { return this.age; } }
八、实体JavaBean
1、也可以称为实体类,是一种特殊形式的类,其对象可以用于在程序中封装数据
2、学生类、老师类、汽车类都是javabean,但是测试类不是javabean
3、实体类javabean的书写要求:
①成员变量使用private修饰
②提供成员变量对应的setXxx()/getXxx()方法
③提供一个无参构造器,有参构造器可写可不写
④如果提供了有参构造器,一定不要忘了写上无参构造器
九、补充:成员变量和局部变量的区别
1、类中的位置不同:
成员变量在类中方法外;局部变量常见于方法中
2、初始化值不同:
成员变量有默认值,无需初始化;局部变量没有默认值,使用之前需要完成赋值
3、内存位置不同:
成员变量在堆内存;局部变量在栈内存
4、生命周期不同:
成员变量随着对象的创建而存在,随着对象的消失而消失;局部变量随着方法的调用而存在,随着方法的运行结束而消失
5、作用域:
成员变量在整个类中都有效;局部变量只在所归属的打括号中有用