面向对象
面向对象是一种分类的思维模式,思考问题首先会解决需要哪些分类。比如,建一栋房子,我们会分别找人建地基、盖楼房、安装门窗等等,最后分类下个个个细节再用面向过程一步步的解决。总而言之,面向过程与面向对象密不可分。
1.类与对象
-
是什么
类是对具有相同静态属性(字段、成员变量)和动态行为(方法)的事物的抽象。类相当于一个模板,对象是类的实例化,相当于一个具体的实例。
-
创建与初始化
new
构造器:特征、作用、注意点。
-
掌握内存分析 (栈----->堆)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2IrbqfAv-1614651762973)(C:\Users\2020\AppData\Roaming\Typora\typora-user-images\image-20210301104354614.png)]
-
this
代表所在类的对象引用。
-
抽象类
abstract
注:继承抽象类的类必须实现其抽象方法,除非其本身也是个抽象类。抽象方法必须在抽象类中,抽象方法中有名,没有体。
其本质就是一种约束。抽象的抽象,提高开发效率。
2.三大特征
封装
-
高内聚,低耦合。
封装内部实现的细节,仅仅把一些方法留给外部调用。
-
属性私有,get/set。
继承
-
extends
子类继承父类所有非私有属性和方法。
-
Object类
祖宗类
-
super和this
- 代表的对象不同。
- 前提不同。
- 调用不同的构造函数。
-
方法重写
子类与父类要一致,方法(非静态方法)体不同(public>protected>default>private)
- 哪些方法不能被重写
- static修饰的
- final
- private
- 哪些方法不能被重写
多态
-
什么是多态
简单的来说就是父类引用指向子类对象,说具体点就是同一方法可以根据发送对象的不同而采用多种不同的行为方式。
-
条件
有继承关系(is…a)。
有重写(即父类引用不能调用子类独有的方法)、有重写才有意义。
有父类引用指向子类对象。
-
注意
多态是方法的多态,没有属性的多态。
-
X instanceof Y
判断X和Y有无父子关系
-
类型转换
3. static
- 修饰变量为静态变量
- 修饰方法
- 静态代码块:进行一些初始化
- 静态导入包
总之记住,被static修饰的东西会和类一起加载,且执行一次,可以通过类名访问其变量和方法。
4. 接口
接口(Interface)的本质就是一种锲约,简单的来说就是定义一些方法的规范,方法的功能是确定的,而具体的实现可以不同。
作用:
- 约束
- public abstract
- public static final
- implements可以实现多继承,即实现多个接口。
- 实现类必须实现其接口中的方法。
- 接口不能被实例化,因为其接口没有构造方法。
5. 内部类
-
成员内部类
通过外部类实例化内部类,用内部类访问其外部类的私有属性。
Outer.new Inner()
-
静态内部类
static修饰
-
局部内部类
在方法体中声明的类
-
匿名内部类
new method(){方法重写}