面向对象 & 面向过程
-
面向过程: 步骤很清晰, 第一步做什么, 第二步做什么, 第三步做什么...
例如:吃煎饼果子利用面向过程的思想:
-
学习摊煎饼的技术
-
买材料鸡蛋,油,葱等等
-
开始摊
-
吃
-
收拾
-
-
面向对象: 物以类聚, 是一种分类的思维模式, 思考解决一个问题需要哪些分类, 对每个分类单独思考, 然后对每个分类的细节面向过程思考. 适合处理需要多人协作的问题.
例如:吃煎饼果子利用面向对象的思想
-
找会摊煎饼的大妈(创建一个摊煎饼大妈的对象)
-
调用其摊煎饼的技能(功能),传递进去钱参数
-
返回给我们一个煎饼
-
吃
-
-
面对对象编程的本质: 类的方式组织代码, 对象的方式封装数据.
-
类是一个抽象的概念, 对象具体的事务, 是类的实例
-
创建对象: Student stu = new Student(), 使用new关键字创建对象时, 不仅会分配内存空间, 还会对创建好的对象进行初始化, 调用类的构造器.
构造方法
- 类的构造方法, 也叫做构造器
/*
* 构造方法:
* 给对象的数据进行初始化
*
* 格式:
* 方法名和类名相同
* 没有返回值类型,连void都不能写
* 没有具体的返回值
* 如果没有显示的声明构造方法, java提供了默认的构造方法
* 一旦创建了有参的构造方法, 想要调用无参构造就必须显示的定义
*/
public class Student {
public Student() {
System.out.println("这是构造方法");
}
}
封装
- 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改.
- 将不需要对外提供的内容都隐藏起来. 把属性隐藏,提供公共方法对其访问. 成员变量private,提供对应的getXxx()/setXxx()方法
- 简单来说就是属性私有化(private), 对外提供get/set 方法.
继承(is a)
- 继承是对某一批类的抽象, 使用extends关键字, 子类是父类的扩展.
- java只支持单继承, 不支持多继承.
- 继承后, 子类能够访问父类所有的非私有属性和方法
多态
一个对象的类型是确定的,但是可以指向多个引用类型, 多态是方法的多态.
- 有继承的条件
- 子类重写父类的方法
- 父类的引用指向子类对象
super & this
super
- super 代表对父类对象的引用, 必须在继承条件下才能使用.
- super() 代表调用父类的构造方法, super()必须在构造方法的第一行.
- super只能出现在子类的构造方法/方法中.
- super 和 this 不能同时调用构造方法.
this
- 代表调用者当前这个对象
- 没有继承条件也可以使用
- this() 代表本类的构造