面向对象与面向过程
面向对象与面向过程都是一种编程思维,只是处理问题的方式不太一样;
面向过程:考虑清楚每一步的步骤,第一步应该做什么,第二步应该做什么...
面向对象:首先对问题进行分类,接着对这些分类进行单独思考,最后,才是对各个分类进行细节的思索。
类与对象基本概念
类:表示的是一个共性的产物,定义的是属性和功能。故此,我们将那些具有相同属性和功能的对象统称为类。
广义对象:但凡存在于生活中的事物,都可以称之为对象。
狭义对象:就是由某一个类所描述出来的具体的事物。
例:杯子与容器。哪个称之为类,哪个称之为对象?
答案是:杯子为对象,容器为类。
例:麻烦请你帮忙把我的杯子拿过来,请问这句话中的杯子表示的是狭义对象还是广义对象?
答案是:狭义对象,此杯子表示特指我的杯子。
在现实生活中,人们是先观察已有的对象,从而产生类。但在编程世界中,往往是我们先定义一个类后再进行对象的创建。
如何创建一个类
封装
将独立单元或者多个数据进行整体的封装,目的在于重复利用和操作方面。
不需要过多在乎封装的内容,我们只需要调用即可,底层对于调用者而言是透明的。
(1)循环:将重复执行的代码进行封装到循环语句中;
(2)函数:将具有独立功能的代码进行封装到函数中;
(3)数组:将多个同类型的数据进行封装到数组中;(数据类型一样,空间连续)
(4)类:将具有相同属性和行为的对象统一的封装;
语法
权限修饰符 类型 class类名{
//属性-变量/常量
// 行为-函数
构造代码块
静态代码块
成员变量/实例变量
静态变量
构造函数/构造器
成员函数/实例函数
静态函数
继承而来的函数
}
在Java中,尽量一个Java文件中包含一个类;并且类名和文件名必须一致;和文件名同名的类必须是public类型
成员变量
实例变量,是对象的特有属性,每个对象都具有这些属性,成员变量是具有默认初始化的(默认值);
语法:权限修饰符 数据类型 变量名 = 值;
创建对象语法:类名 变量名 = new 类名();
可以在创建对象之后,对成员变量进行修改
成员变量是具有显示初始化的(类中写明的值)
成员变量的初始化流程:默认——显式
默认和显式都是在创建对象的过程中进行的
修改是在对象创建完毕之后,初始化是在创造的过程中;
成员函数
又称为实例函数,对象的特有行为 ,每个对象都应该就具有的行为, 这个行为每个对象的流程都是一样的,结果不一定一样。
语法格式:权限修饰符 返回值类型 函数名(参数列表){
函数体
}
注意:没有static的!
函数中的参数,实际上是指该函数的局部变量(在函数内部创建的变量)
局部变量于成员变量重名时, 调用变量就近原则,一般用this关键字进行区分
this含义为 当前对象的
成员函数可以进行重载
此外,我们还要用权限修饰符来对我们的对象属性私有化,来保证我们数据的安全性。
私有化——private,
私有化的目的——不让外界随意的修改对象的属性
私有化之后,外界是看不到私有的内容
为了避免正常访问被限制,需要提供另外一个访问去向外界访问,所以我们要在进行私有化后,设置访问器。
访问器语法:public 属性类型 方法名(){
return 属性名
}
注:方法名命名为" get属性“
同时为了方便外界对属性的赋值,我们需要设置一个属性修改器
语法:public void 方法名(变量类型变量名){
this.属性 = 变量名;
}
注:方法名命名为"set属性";
构造函数
作用:针对性初始化
语法格式:权限修饰符 类名(参数列表){
函数体
return;
}
//类中定义一个构造函数 public point(double x,double y){ //类似于修改器setXxx this.x=x; this.y=y; } //外界在创造对象的时候对对象的值进行修改 point c1 = new point(x:1,y:2);
任何一个类,在没有明确定义构造函数的时候 它会有一个默认无参的构造函数,一旦定义任何一个构造函数,那么默认无参函数就会消失
函数名与类名相同
没有返回值类型。
构造函数在创造的时候执行;
构造函数是可以重载的;