oop(Object Oriented Programming)面向对象编程
Day01:
1.编程可以分类为面向过程编程和面向对象编程.
面向过程编程:考虑的是程序整体的运行流程(比如我需要制造一辆小汽车,需要考虑先造轮胎还是发动机还是汽车外壳等流程)
面向对象编程:考虑的是如何将每个解决业务问题的程序代码组合在一起(比如将小汽车的发动机,轮胎等部件组装起来)
相比较于面向过程编程,面向对象编程能显著的减少代码冗余,提高代码的可维护性和可扩展性
2.什么是对象?
在编程里面,万物皆可以是对象,生活就是由无数的对象组成的,通俗理解可以把对象理解成东西,而且还可能有对象中包含对象的含义.
生活中,对象是真实存在的,比如一个杯子,被子里面的水都可以称之为对象,类型是一个概念,泛指所有这个类型的对象.所以在生活中,是先有的对象再有的类
在编程里面,和生活正好相反,先有的类再有的对象.
3程序中的对象包含有两条性质:
3.1属性:表示该对象所具有的数据描述(比如,对于对象小汽车,长是多少,宽是多少,都属于这个小汽车的属性)
3.2方法:表示对象所具有的行为和功能(如,还是一辆小汽车,该汽车可以鸣笛,可以开关车门等一些列操作)
4程序中自建类:
class <类名>{ //类名首字母必须大写 //属性(成员变量)
public <返回值类型><方法名> (参数列表){
//方法体
}
}
4.1当我们自定义一个类时,可以将多个不同类型的数据放在同一个对象当中
4.2类像一个模板,规定这个类里面的对象所拥有的属性和方法
4.3一个类可以创建无数个对象
5由类创建对象
在代码中编写创建对象的代码叫对象的实例化
<类名><对象名>=new<类名>();
如:Student stu=new Student();
如何操作一个对象?
<对象名>.<属性>;
<对象名>.<方法>;(.可以理解成 的)
对象实例化以后是有默认值的(0/0.0/false/null)
6.public class <类名>(类名必须和文件名一致)
且之后的所有类名不能有修饰符public
只有public所修饰的类中能有程序的入口main方法
7.方法重载
7.1方法签名
方法签名=<方法名>+(参数列表)
在同一个类中,不允许出现方法签名相同的 方法
7.2方法重载(超载,Overload)
在同一个类中,方法名相同,参税列表不同的方法,我们称之为方法重载
1)在同一个类中
2)方法名相同
3)参数列表不同(包括列表中声明的数据类型不同,数量不同,顺序不同)
4)方法重载与修饰符和返回值无关
7.3调用重载方法时,代码进行编译时就确定了要运行哪一个方法,我们称之为编译期绑定
7.4在方法功能类似只是参数不同时,我们可以使用相同的方法名,通过方法重载,方便我们进行记忆和调用
7.5系统中出现的方法重载
System.out.println();
Arrays.copyOf();
Arrays.sort();
Day02:
1.构造方法(构造器 构造函数)
在实例化对象时运行的特殊方法
一般情况下,构造方法适合对实例化的对象赋初始值
构造方法格式:
public <类名>{
//方法体
}
1.1构造方法不写返回值类型
1.2构造方法的方法名必须和类名相同
1.3构造方法不能调用,只能在对象实例化的时候运行(只有在new的时候运行)
new<类名>(参数列表);//实例化对象时调用构造方法
1.4注意事项:
如果一个类中,没有编写构造方法,那么系统会自动生成一个无参构造方法
如果编写了构造方法,系统就不会生成无参构造
构造方法可以重载,原理与自定义方法的方法重载相同
2.成员变量和局部变量
成员变量就是类中定义的属性;
方法中定义的变量或者形式参数就是局部变量.
成员变量与局部变量的区别:
2.1作用域不同,成员变量可以在类中的所有方法使用,局部变量只能在声明它的方法中使用
2.2初始值不同,成员变量初始值(0\0.0\false\null)
局部变量没有初始值
2.3优先级不同,当成员变量与局部变量同名时,局部变量拥有更高的优先级,如果想访问成员变量需在变量名称的前面加this.(this.<变量名>)
3.this关键字
this是对象在方法中对自身的引用
this.<属性>
区分成员变量和局部变量
this.<方法>
不常用
this()
调用当前类的构造方法,必须编写在构造方法的第一行(只能是构造方法!!!!!)方法不能自己调自己或者无限循环的调用称为 递归.
4.引用数据类型
4.1引用数组类型的特征(String,自造类,数组)
变量保存的是这个对象的引用
在方法中,变量的引用保存在 栈 中,而对象保存在 堆 当中
4.2引用数据类型数组(实例化对象使用小括号,声明数组使用中括号)引用类型数组的默认值是null
4.3关于null和null指针异常
null是个常量,表示当前没有引用任何对象,当这样的null对象打.调用属性或方法时,会出现null指针异常;通常情况下,如果遍历引用数组类型时,发生null指针异常,那么需要在元素调用属性的方法前面增加一个if判断
4.4多维数组(二维数组)
数组的元素还是数组我们称之为二维数组