面向对象的四大支柱:
- 抽象 - 定义一个类的过程就是一个抽象的过程(数据抽象、行为抽象)
通过抽象我们可以将数据和操作数据的方法以"对象"的概念绑定到一起
抽象的过程是一个仁者见仁智者见智的过程,对同一个对象做抽象可能会产生不同的结果 - 封装 - 隐藏一切可以隐藏的实现细节,只向外界提供最简单的编程接口
- 继承 - 从一个已有的类创建新类的过程,提供继承信息的叫父类(超类、基类)
得到继承信息的叫子类(派生类、衍生类),继承是实现代码复用的一种手段. - 多态 - 同样的引用类型调用相同的方法但是做了不同的事情
实现多态有两个关键步骤: 1.方法重写 ; 2.对象造型
我们能够操控的内存:
栈 - 快、小 - 临时变量/局部变量
堆 - 稍慢、大 - 对象
方法区 - 代码、常量
temp在栈上 它保存了堆上的Cat对象的地址
通过temp就可以找到堆上的对应的Cat对象并给对象发消息
所以我们通常把对象类型的变量称为对象的引用
Java中的类型就分为两大类:基本数据类型(8种)和枚举类型
引用类型
同样的类型调用相同的方法(发同样的消息)
但是用了不同的事情 - 这就是多态(polymorphism)如何实现多态:
1.方法重写 - 子类在继承父类的过程中对父类的方法给出自己的实现版本
2.对象造型 - 用父类型的变量保存子类对象instanceof运算符可以判断对象是不是某种类型
该运算符在程序运行时判定对象的类型 - RTTIJava中有4种访问修饰符:
private<default<protected<public