好像有一天没有更新了,今天来更新一下。那么第六天主要就是讲面向对象
一、面向对象的概述:
什么是面向对象思想?
是一种编程思想,面向过程强调的是过程,面向对象强调的是对象,面向对象基于面向过程
特点:(好处)
1、更加符合人类的思维习惯
2、复杂问题简单化
3、身份发生改变,执行者变成指挥者
二、面向对象的三大特征:
封装,继承,多态
举列子:
反问
三、类与对象概述:
核心概念:
类:相关属性和行为的集合
对象:事物的具体体现
属性:名词,描述的是事物的特征
成员变量:其实和原来的定义方法一样,只不过是位置改变了,在类中方法外
行为:动次,描述的是事物能干啥
成员方法:和原来一样,只不过是去掉了static
学生类:
属性:姓名,年龄,身高,体重,性别
行为:吃饭,睡觉,学习
类的使用:
先创建一个对象
类名 对象名 = new 类名();
访问属性
对象名.属性名
访问方法
对象名.方法名()
java 类名
1、启动jvm虚拟机进程
2、加载测试类
3、main方法进栈
4、Car c1
5、在方法区中没有找到Car.class,从classpath路径中加载该类,进入方法区
6、根据Car.class描述的信息,在堆内存中分配内存空间(地址就确定了),并赋默认的初值
7、把对象的地址,赋值给栈内存中的引用
两个对象:
1、每new一次,在堆内存中就生成一个对象
2、Car.class只加载了一次
3、NullPointerException,你的引用如果没有指向任何对象,那么你再调用对象的方法就会报出此异常
4、垃圾回收机制,内存中的对象没有任何引用指向他,那么他就变成了垃圾,很快就会被回收掉
两个引用指向一个对象:
无论你用哪个引用操作了对象,对象都会发生改变,将来你无论用哪个引用去访问对象,对象都是已经改变过的
四、成员变量和局部变量的区别:
1、定义的位置不同:
成员变量是在类中,方法外
局部变量:在方法中或者方法声明
2、内存中的位置不同
成员变量:堆内存
局部变量:栈内存
3、生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用结束而消失
4、初始化值不同:
成员变量:有默认初始化值
整型:0
浮点型:0.0
布尔型:false
字符型:'\u0000'
局部变量:没有默认的初始化值,你必须要赋值之后,才能使用
注意事项:
就进原则:当你的成员变量和局部变量的名字一样的时候,使用时,用的是谁?
当形式参数是引用数据类型的时候,传递的是地址值
Person p = new Person()
print(p);
public void print(Person p){
}
匿名对象:
匿名调用方法,适用于,你只调用一次的时候
匿名对象可以调用属性,并且可以赋值,但是,没有意义,因为一赋值完,这个对象就变成了垃圾
匿名对象可以作为方法的实际参数来使用
public void print(Person p) {
}
封装:
隐藏对象的属性和实现细节,对外提供公共的访问方式
好处:
隐藏实现细节,提供公共的访问方式
提高代码复用性
提高安全性
原则:
把不需要暴露的内容隐藏起来,隐藏属性和实现细节,提供公共的访问方式
private关键字:
修饰成员变量,成员方法,效果:只能在本类中被访问
getAge()
setAge()
封装
this关键字:
作用,用来区分成员变量和局部变量重名的情况
this代表的是当前对象的引用,谁来调用我,我就代表谁 |
|