面向对象思想
理解:
面向对象更多的是一种思想的体现。
面向过程更多体现的是什么事情都要亲力亲为。
而面向对象跟多体现的是如何指挥别人做事情,只要明确我要干什么即可。
通过将相关或类似的功能 封装在不同的Java类中。相当于我的类具备了 完成某种、某类、某个问题的能力
面向对象的特点:
更符合我们的思维习惯,
可以将复杂的问题简单化。
我们的角色从原来的执行者变成了指挥者。
抽象对象的思维方式:
抽象对象(名词法)
分析对象的特征和行为
分析对象之间的关系
创建对象,指挥对象做事情
面向过程的处理方式:
要把大象装冰箱总共分3步:
main(String[] args){
System.out.println("打开冰箱门");
System.out.pritnln("大象进入冰箱");
System.out.println("关上冰箱门")
}
//面向过程的升级:方法
main(String[] args){
open();
in();
close();
}
public static void open(){
System.out.println("打开冰箱门");
}
public static void in(){
System.out.pritnln("大象进入冰箱");
}
public static void close(){
System.out.println("关上冰箱门")
}
如果处了面向对象的思想,要解决这个问题,它思考的角度就变了
首先要知道面向对象关注的点:
我要完成这件事情涉及到哪些对象。
每个对象应该具备什么样的能力
对象和对象之间的关系
//分析对象: 最简单直接的方法就是名词法。
把大象装冰箱
名词: 大象 、 冰箱 、 “你”-程序
//分析对象的能力
冰箱:
开门
关门
大象:
进入冰箱
//分析对象间的关系
大象 进入的时候, 依赖冰箱。
//开始实施面向对象的编程
大象{
进入(冰箱);
}
冰箱{
开门();
关门();
}
程序{
main(String[] args){
拿一台冰箱 bx;
拿一只大象 dx;
调用冰箱的功能: bx.开门();
调用大象的功能: dx.进入(bx);
调用冰箱的功能: bx.关门();
}
}
优点
Java 是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点
代码开发模块化,更易维护和修改。
代码复用。
增强代码的可靠性和灵活性。
增加代码的可理解性。
三大特征
- 封装:只隐藏对象的属性和实现细节,仅对外提供公共访问方式
好处:将变化隔离、便于使用、提高复用性、提高安全性
原则:将不需要对外提供的内容隐藏起来;把属性隐藏,提供公共方法对其访问 - 继承:提高代码复用性;继承是多态的前提
子类中所有的构造函数都会默认访问父类中的空参数的构造函数,默认第一行有super();若无空参数构造函数,子类中需指定;另外,子类构造函数中可自己用this指定自身的其他构造函数。 - 多态
是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象
好处:提高了程序的扩展性
弊端:当父类引用指向子类对象时,虽提高了扩展性,但只能访问父类中具备的方法,不可访问子类中的方法;即访问的局限性。
前提:实现或继承关系;覆写父类方法。
后面的内容会详讲到