0129集训授课——面向对象思想(一):封装与抽象
集训的课程安排:
1、Java前置知识学习 什么是Java Java的由来与发展 Java能做什么(语言漫谈,语言的本质是一种约束) 为什么要学Java? Java JDK安装(顺带讲一下Java运行机制) Java环境变量配置 Java利器——idea 安装与使用
2、 Java基础1: 注释 标识符和关键字 数据类型(基本类型、引用类型) 类型转化 Scanner类讲解 简单的helloword程序
3、Java基础2: 变量、常量、作用域 基本运算符(加减乘除、取余、逻辑运算符) 流程控制(if、switch、while、do-while、for、增强for循环(如果可以,原理也可以讲下)、break、continue、goto等等) (作业可以类似于打印九九乘法表)
4、 Java基础3: 包机制 方法(什么是方法、定义与使用、方法的重载、可变参数的传递) 数组(什么是数组、数组的声明与创建、二维数组)
5、 面向对象1(封装与抽象):封装(何为封装、为何要封装、封装的简单案例) 类和对象的创建 构造器的使用 创建简单的对象类并赋予相应方法
6、面向对象2(继承与接口):问题引入(给定一个场景,引导思考,紧接着引出继承) Java的继承机制 抽象类和抽象方法(abstract) 面向接口编程(接口是什么,怎么用接口,使用接口的好处) 继承与接口的区别
问题思考
1、什么是面向对象?
2、什么是对象?
一系列行为与属性的一个集合
3、面向对象的程序设计与面向过程的程序设计有什么区别?
问题与模型
4、当我们谈及面向对象时,我们所关心的是什么?
面向对象的编程有三大特性:封装、继承和多态。
而我们今天聚焦于封装。
由String类引入封装
大家前几天上课都着重于Java的基础语法,其中在讲数据类型时,应当是区分了基本类型与引用类型,其中,用的最多的引用类型,就是String。
//ctrl+B跳转查看Java源码。
如何去创建一个类?-》构造器,”this“
如何去设计一个类?
如何去封装一个类?
知识储备
this关键字
构造器
-
构造函数名称必须与其类名称相同
-
构造函数必须没有显式返回类型
构造器分为两种:
-
默认构造函数(无参数构造函数)
-
参数化构造函数
修饰符
修饰符/位置 | 类内部 | 本包 | 子类 | 外部包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
不那么”面向对象“的设计——static关键字
static静态代码块:
执行顺序:静态代码块->非静态代码块->构造函数
import static:
import static java.lang.Math.*;
public class StaticImportTest {
public static void main(String[] args) {
// out是java.lang.System类的静态成员变量,代表标准输出
// PI是java.lang.Math类的静态成员变量,表示π常量
out.println(PI);
// 直接调用Math类的sqrt静态方法,返回256的正平方根
out.println(sqrt(256));
}
}
作业
1、设计两个类,每个类中需要有三个以上属性,get,set方法,构造器,以及额外定义三个以上的方法,思考这两个类之间如何交互,最好能体现在代码里面。
2、(可选)补全,回答本md中的问题,因为金昊霖组长要求集训课程需要写博文,所以~~,大家可以完善一下然后写的比较优秀的就作为今天课程的博文啦。
提交要求
提交md格式文件,其中以名字+日期+“面向对象思想(一)”命名,里面需要涵盖作业1代码,代码运行截图。在1月30日中午12:00前发送到1781738565@qq.com 。
(图床大家会用了叭,md语法也应该比较熟悉了)
Reference
https://github.com/LingCoder/OnJava8/blob/master/docs/book/07-Implementation-Hiding.md