- Review
- 继承方式比较
- 继承后子类对父类的访问权限说明
- super关键字作用(2个)
- 构造函数的调用顺序
- 没有参数的构造函数即为默认构造函数
- Lecture notes
- final关键字
- final啥都可以修饰
- final类【不可继承】
- final方法【不可重写】(遇到很少)
- 全局常量(很常见)
- Java无全局变量
- 对象的上转型对象
- 上转型对象定义
- 上转型对象相当于子类对象的一个“简化”对象
- 上转型对象示意图
- 上转型对象的特点
- 抽象类和抽象方法
- C++纯虚函数
- abstract可以修饰类和方法
- 抽象类(不能用new关键字生成新东西)
- 抽象方法(只允许声明,不允许实现)
- 抽象方法不能用final修饰的原因
- 适配器使用方法
- 消息驱动机制
- 消息循环
- CLI/CUI
- 举例WPS关闭按钮
- 面向对象编程的一个设计方法:面向抽象编程(在Java高级技术贯穿始终)
- 接口中所有函数都是抽象函数,无构造函数。
- 接口就是定义一个标准。常量声明必须初始化
- Open-Closed Principle
- 开闭原则:对扩展开放,对修改关闭
- 制定标准
- References
- Edition 2021/10/9&10
C++
- private
- protected
- public
Java
继承后子类对父类的访问权限说明Java只有public这一种继承方式,且没有多重继承,即一个子类有且只有一个父类。
protected public子类可继承
private不可继承(扩散方法中friend不会被继承)
friend(一个包内可继承,不同包内不可继承)
- 指明父类构造函数
eg.
super();
父类构造函数指定super(int age)必须放在子类第一行
{写
不写}
- 访问覆盖的(被隐藏)成员变量和方法
eg.
super.name
父构->子构
Grandpa->Father->Son->…
没有参数的构造函数即为默认构造函数 Lecture notes final关键字 final啥都可以修饰
final类【不可继承】final关键字可以修饰类,成员变量和方法中的局部变量
final类不能被继承,即不能有子类
final class A{
}
final方法【不可重写】(遇到很少)
final方法不允许子类重写,即不允许子类隐藏可以继承的final方法(老老实实继承,不许做任何篡改)
全局常量(很常见)在接口中用到
等价于C++中的const常量
class A{
final double PI=3.1415926;
}
Java无全局变量
Java要实现全局变量就设置类成员、类方法达到全局变量的功能。
对象的上转型对象 上转型对象定义上转型对象相当于子类对象的一个“简化”对象当用子类创建一个对象,并把这个对象的引用放到父类的对象中时,称子类对象a是父类对象b的上转型对象
对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能。
上转型对象示意图 上转型对象的特点- 上转型对象不能操作子类新增的成员变量(失掉一些属性),不能调用子类新增的方法(失掉一些功能)
- 上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类重写Override的实例方法
- 如果子类重写了父类的某个实例方法后,当对象的上转型对象调用这个实例方法时一定是调用了子类重写的实例方法。
- 可以将对象的上转型对象再强制转换到一个子类对象。这时,该子类对象又具备了子类所有的属性和功能。
- 不能将父类创建对象的引用赋值给子类声明的子类声明的对象。
- 如果子类重写了父类的静态方法,那么子类对象的上转型对象不能调用子类重写的静态方法,只能调用父类的静态方法。
(没有任何函数体,也不能有任何函数体)
abstract可以修饰类和方法- 抽象类
- 抽象方法
Java抽象类中
- 可以有抽象方法
- 可以没有抽象方法
在抽象类中写抽象方法->对子类的约束,必须重写实现。
抽象方法(只允许声明,不允许实现)abstract int min(int x,int y)
抽象方法不能用final修饰的原因
抽象方法必须在子类中重写,final必不能重写
后面要学的GUI,抽象类构成最基本的交互。
用一个类同时继承接口和已知类,利用已知类中定义的方法和属性等,实现接口中的定义(主要利用了重载接口方法的办法)。用此类作为其他业务类的基类,也就是这个类适配了接口和已知类。若已知类发生变化,只需修改类适配器,就可以满足接口的实现。
消息驱动机制“消息”是windows运行机制中一个基本而又重要的概念。消息是一个报告事件发生的通知,消息驱动是围绕消息的产生与处理展开的,并依靠消息循环机制来实现。
消息循环所谓“消息循环”,实际是程序循环。即Windows 中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能创建的各种窗口的消息。应用程序中含有一段称作“消息循环”的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中。
消息循环代码是应用程序中主函数WinMain ( )中类似如下的程序段:
while(GetMessage(&msg,NULL,0,0))
{ //从消息队列中取得消息
TranslateMessage(&msg);
//检索并生成字符消息WM_CHAR
DispatchMessage(&msg);
//将消息发送给相应的窗口函数
}
由此可见,所谓“消息循环”,实际是程序循环。
命令行界面(英语:command-line interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(character user interface, CUI)。
举例WPS关闭按钮消息驱动机制:总控制台对外界传来消息做出反应。“关闭文件”消息传到总控制台,总控制台根据消息做出反应,Windows操作系统负责消息,Java虚拟机则是event事件触发被listener监听器捕捉,总控台采取一个action行动,执行相应动作。
美化页面:eg. 继承button类,写倒角函数。
参数的传递全部用接口->面向接口编程
具体使用子类对象很少->面向父类编程(应用时不会写子类,平常作业题会出现写子类)
抽象类有构造函数,可不写构造函数。
abstract class GirlFriend{
//void speak()=0;
abstract void speak();
abstract void cooking();
}
接口就是定义一个标准。常量声明必须初始化 Open-Closed Principle 开闭原则:对扩展开放,对修改关闭
在系统中增加新的模块时,不必去修改系统中的核心模块。
制定标准编程语言都遵循三个结构
- 顺序
- 循环
- 条件
计算机架构(计算机组成结构):南北桥 Intel和AMD都要遵守,
而Intel制定了主板的标准,中国一些相关公司也必学遵循技术标准…



