面向对象 & 面向过程

  • 面向过程: 步骤很清晰, 第一步做什么, 第二步做什么, 第三步做什么...

    例如:吃煎饼果子利用面向过程的思想:

    1. 学习摊煎饼的技术

    2. 买材料鸡蛋,油,葱等等

    3. 开始摊

    4. 收拾

  • 面向对象: 物以类聚, 是一种分类的思维模式, 思考解决一个问题需要哪些分类, 对每个分类单独思考, 然后对每个分类的细节面向过程思考. 适合处理需要多人协作的问题.

    例如:吃煎饼果子利用面向对象的思想

    1. 找会摊煎饼的大妈(创建一个摊煎饼大妈的对象)

    2. 调用其摊煎饼的技能(功能),传递进去钱参数

    3. 返回给我们一个煎饼

  • 面对对象编程的本质: 类的方式组织代码, 对象的方式封装数据.

  • 类是一个抽象的概念, 对象具体的事务, 是类的实例

  • 创建对象: 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() 代表本类的构造