一、面向对象
1、面向对象和面向过程的区别?
面向对象是相当于给出一件事情,你要思考的是“我让谁来做”,然后去一步步实现,那个谁就是对象,具体他怎么完成的,我们不管,只需要他把事情完成即可;而面向过程则是,遇到一件事情,思考“我该用什么方式一步步来完成”,例如打扫卫生,要完成擦玻璃、扫地、拖地等一系列操作以后,这个事情才完成。
综上:面向对象就是遇到事情,思考的是让谁来做;面向过程就是遇到事情,思考的是怎么去做。
2、类与对象
面向对象这一编程思想力图在程序中对事物的描述与其在现实世界中的形态保持一致。为了做到这一点,面向对象的思想提出了两个概念,即类与对象。类就是对某一类事物的抽象描述。对象则是该类在现实生活中该类事物的个体。
结合上面的面向对象和面向过程的区别,我们以把大象装进冰箱为例:
需求:把大象装进冰箱
对象:大象、冰箱
步骤:
(1)打开冰箱门;
(2)把大象放进去;
(3)关闭冰箱门;
对于面向过程而言,我们需要知道如何打开冰箱门,如何把大象放进去,如何关闭冰箱门;对于面向对象的思想而言,我们发现打开门、装东西、关闭门都是冰箱具有的功能,而大象只需要让冰箱执行这些功能即可。
因此我们可以用伪代码来描述这些对象
1)描述大象
class 大象{
}
2)描述冰箱
class 冰箱{
void open() {
}
void storage(大象) {
}
void close() {
}
把事物描述清楚以后就用使用这些事物,Java中通过new来创建这个事物的具体实例对象。
3)使用对象
1.创建大象的实例对象
大象 elephant = new 大象();
2.创建冰箱的实例对象
冰箱 refrigerator = new 冰箱();
3.调用冰箱的功能来完成装大象
对象.功能();
refrigerator.open();
refrigerator.storage(elephant);
refrigerator.close();
综上:
1、先按照名词问题领域中的对象;
2、对对象进行描述,包括他的属性、功能等;
3、通过new的方式去创建这个类的具体实例对象;
4、通过这个实例对象去调用功能。
二、面向对象的三大特性
面向对象的三大特性:封装、继承、多态。
1、封装:把对象的属性和方法的实现细节给隐藏,然后对外提供一些公共的访问方式。
封装表现:
(1)方法就是一个最基本封装体;
(2)类其实也是一个封装体。
封装的好处:
(1)提高了代码的复用性;
(2)隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用;
(3)提高了安全性。
注意:
(1)私有化(private)仅仅是封装的一种体现形式。
(2)当被private修饰了成员变量后,可以通过 getter 和 setter 方法来进行访问这些属性。
(3)this 关键字,当成员变量和局部变量出现同名问题是,可以用this关键字类区分,具体 this 在调用中指代的是什么,要看 this 所在的方法,哪个对象调用了这个方法,this 就是那个对象。
2、继承:Java中类的继承,是指在现有类的基础上去构建声明一个全新的类,构建出来的新类我们称之为子类,现有的类我们称之为父类,子类可以从父类那边继承一切可以使用的方法和属性,多各类具有相同的方法时,可以通过向上抽取,来实现继承。子类会自动继承父类所有可继承的属性和方法,同时子类还可以拥有自己独有的属性和方法。
继承的好处:
(1)提高了代码的复用性,提高开发效率;
(2)继承让类与类之间产生了关系,为多态提供了前提。
继承的注意事项:
(1)Java中类只支持单继承,不允许多继承,也就是一个类只能够有一个直接父类;
(2)多个类可以同时继承自同一个父类,一个父类允许有多个子类;
(3)继承可以是多层继承,也就是一个类A继承自类B,类B又可以继承自类C;
(4)在Java当中,子类和父类是一种相对的概念。
子父类中成员的特点:
(1)子父类中出现不同名字的成员变量是,可以随意访问,但是,如果子父类中出现同名的成员变量时,这个时候不加任何修饰实际上访问的是子类中的非父类成员变量,如果要访问父类中的成员变量,那么就要使用关键字super;
(2)当程序运行对象调用方法时,如果子类中存在这样的方法时,会先调用子类中的方法,如果子类中没有相应的方法就会去执行父类中的方法,同样如果子父类中存在相同的方法时,如果想要访问父类中的方法时,同样要使用super关键字。
补充:
子父类中存在一模一样的方法的时候(即方法声明一样,只有方法体不一定一样),那么就会出现一种覆盖操作,我们称之为重写(@Override)。
重写的时候要注意子类的权限必须大于等于父类的权限。
3、多态:从字面理解就是现实中的事务从不同角度呈现出不同的状态;Java中也是可以从多个角度以多种形态去描述一个事物或个体,子类类型的对象不仅能够用子类类型去描述,还可以用父类类型去描述,即可以用父类类型去描述一个子类类型的对象,从中我们可以发现,想要让一个事物或者个体呈现出不同的形态,那么这多种形态之间必然有联系。
多态最终的体现:
父类类型的引用变量指向子类类型的对象。
多态的前提:
(1)必须是子父类关系或者类实现接口,否则就不能够完成多态;
(2)子类的权限要大于等于父类,至少可以重写。
多态注意点:
(1)父类类型的变量可以指向子类类型的对象,具体可以调用哪些成员变量的属性,要看变量的类型,具体是调用子类或者父类里面哪一个成员变量属性,也要看变量的类型。
(2)父类类型的变量可以指向子类类型的对象,具体可以调用哪些成员方法,要看变量的类型,具体调用的是子类还是父类中的方法,要看对象的类型。
多态中的转型:
(1)向上转型
将子类类型的对象赋值给父类类型的变量,就是向上转型;
(2)向下转型
将刚才转型的父类类型的变量强制转换格式为子类类型的变量,称之为向下转型。
本文深入解析面向对象编程的核心概念,对比面向过程,阐述类与对象的定义,以大象装进冰箱为例,生动说明面向对象的思维方式。并详细解读封装、继承、多态三大特性,探讨其在代码复用性和安全性上的作用。

被折叠的 条评论
为什么被折叠?



