大纲:内容

1.面向对象回顾

2.匿名对象介绍

3.面向对象特征-继承

4.抽象类的使用

5.模板设计模式

1.面向对象的核心思想是什么

·面向对象的核心思想是什么?

—用代码来模拟现实生活中的事物,比如学生类表示学生事物,对象表示的就是具体的学生,有了类就可以描述万千世界所有的事物了。

·先有类还是先有对象?

—对象是根据类创建出来的,所以先有类,再有对象。

·Java类的创建?

—类名建议使用大驼峰命名法,每个单词首字母需要大写。
—Java规定,一个Java文件中可以定义多个类,但是只能有一个类使用public修饰,public修饰的类名需要和java文件名保持一致。
—按照规范,实际工作之时,建议一个文件中只能有一个类。

·类中的组成成份?

—1 成员变量
—2 成员方法
—3 构造方法
—4 内部类
—5 代码块
——类成份示例:
public class Student{
//1.成员变量
private String name;
//2.构造器
public Student() { }
//3.方法
public void run(){ }
//4.代码块
static { }
//5.内部类
public class Heart{ }
}

·关于对象的简单操作

··创建对象所使用的关键字?

—new 关键字

··创建对象的格式?

— 类名 对象名 = new 类名(参数列表);

··调用对象的成员?

—调用成员变量:对象名.成员变量名
—调用成员方法:对象名.成员方法名(参数)

·关于构造方法的特点

··定义构造方法的格式?

—修饰符 类名(参数){…}

··定义构造方法的特点?

—没有返回值,连void都没有
—方法名和类名相同
—构造方法可以进行重载定义

··构造方法的作用?

—空参构造:初始化对象的数据为默认值
—有参构造:初始化对象时,为对象的属性赋值

·面向对象的三大特征

—封装(思想)、继承、多态

·封装的定义

··封装的思想及其作用?

—思想:把实现细节隐藏,对外提供公共的访问方式
—作用:提高代码的安全性,提高代码的复用性

··封装的步骤?

—把成员变量进行private修饰
—提供对应的setter和getter方法

·this关键字

··this关键字的含义?

—this代表的是本类对象的引用
—在构造方法中,this代表的是new的对象
—在成员方法中,this代表的是调用此方法的对象

··this关键字的作用?

—主要用于区分局部变量和成员变量同名的问题

2.匿名对象介绍

·什么是匿名对象?

—没有变量接收的对象,被作为匿名对象

·匿名对象的使用?

—直接使用匿名对象调用方法
—匿名对象作为方法传参
—匿名对象作为方法的返回值

3.继承

··为什么学习继承?

—继承是将多个类的相同属性和行为抽取到单独一个类中,那么多个类无需再定义这些共性属性和行为,只要继承这个单独类即可继承。
—多个类称为子类(派生类),单独的这个类称为父类(基类或超类)

··继承的格式

—使用关键字extends进行连接子类和父类

··继承的好处

—提高代码的复用性
—提高代码的维护性
—让类与类产生了关系(继承关系),是多态的前提

··继承的特点

☆Java只支持单继承,不支持多继承,但是可以多层继承

···为什么不支持多继承?

—因为一个子类如果继承多个父类,父类有相同的方法声明,子类会产生继承冲突,所以不允许。

··继承中成员的访问特点

···成员变量

—访问特点:就近原则:子类有调用子类,没有调用父类

···成员方法

—访问特点:就近原则:子类有调用子类的,子类没有调用父类

···构造方法

—子类所有的构造方法都会默认去访问父类的空参构造方法
——-原因:因为子类在初始化时,可能会用到父类的数据,所以通过访问父类的构造,先给父类初始化
—-如果进行初始化呢?
—-每个构造方法中默认第一条语句都会有一个super()
—如果父类没有空参构造,那么子类如何进行给父类初始化?
—-
子类可以通过super(…)访问父类的有参构造方法
—-子类通过this(…)访问子类的有参构造,再通过有参构造去访问父类的有参构造(不推荐)
—-
注意事项:super(…)和this(…)因为二者都需要放在构造方法的第一条可执行语句,所以二者不能共存

··方法重写

···什么是方法重写?

—子类和父类出现了一模一样的方法声明(方法名,参数列表)

···为什么要学习方法重写?

—当子类需要使用父类的功能,但是父类的功能又满足不了子类,那么子类需要重写,这样既可以使用父类的功能,也可以增加新的功能

···如何进行方法重写

—子类和父类的方法声明一样,方法体中的内容重新定义

···Override注解是做什么的,有什么用?

—@Override是放在重写后的方法上,作为重写是否正确的校验注解,加上该注解后如果重写错误,编译阶段会出现错误提示。建议重写方法都加上@Override注解,代码安全!

···方法重写的注意事项

—私有的方法无法重写
—重写的方法与被重写的方法,名字,参数列表需要保持一致
—子类重写父类方法时,子类方法访问权限必须大于或者等于父类方法权限(一般保持一致即可)

··关键字this和super的区别

代表含义 调用变量 调用方法 调用构造
this 本类的对象 this.变量名:访问本类成员变量 this.方法名(…):访问本类成员方法 this.构造方法名(…):访问本类构造方法
super 父类数据存储空间
(可以看成父类的对象)
super.变量名:访问父类成员变量 super.方法名(…):访问父类构成员方法 super.构造方法名(…):访问父类的构造方法

··抽象类

概述

—抽象类其实就是为抽象方法提供存活的空间,需要在类的前面加上abstract关键字修饰
—抽象类的作用主要是规范子类必须实现某种规则

抽象方法

—一个方法要么有方法体,要么是一个抽象方法

注意事项

  • 抽象方法和抽象类必须使用abstract关键字进行修饰
  • 抽象类中可以抽象方法,也可以有非抽象方法,抽象方法必须存在抽象类中
    • 抽象方法的作用:让子类必须实现此功能
    • 非抽象方法的作用,让子类去继承此功能
  • 抽象类不能实例化
  • 抽象的子类

    • 要么是一个抽象类
    • 要么重写所有的抽象方法★

      ··模板设计模式

      设计模式

  • 一套良好的编码格式,经过众多的开发人员不断的测试总结而来

    模板设计模式

  • 可以把抽象类,看做一个模板,非抽象方法理解为模板的通用格式,抽象方法是使用者具体完成的业务逻辑

  • 模板已经定义好了通用的结构,使用者只要关心自己需要的那部分实现功能即可