1、抽象数据类型:将不同类型的数据集合组成一个整体来表述一种新的事物。
2、类:定义了一种抽象的数据类型。
3、面向过程的缺陷:
- 缺乏对数据的封装
- 数据和方法分离
类是对象的模板,对象是类具体的实例
4、构造方法:
- 用于成员变量的赋值
- 与类同名,无返回类型
- 在创建对象时自动调用
- 自己不写构造,程序默认提供一个无参构造
- 可以重载
5 .1堆
- 存在new出来的对象
- 成员变量的生命周期
- 垃圾回收器自动回收(没有任何引用指向对象)调用sysotem.gc() 来回收垃圾
- 内存的泄露:不在使用的对象没有及时回收,
- 建议:不再使用的对象及时将引用设置为null
5.2栈
- 存贮程序用到的出所有的局部变量
- 调用方法时,在战中为该方法分配一个栈帧,栈桢中存放着所有的局部变量,方法结束时,栈桢被清除,局部变量便消失
- 栈的生命周期:方法调用时,栈桢开始;方法结束时,栈桢消失。
5.3方法区
- 用于存储字节码文件及方法
- 方法只有一份,存在方法区中,通过this区分
6、重载和重写的区别
重载是指在一个雷中定义多个方法名相同,但是参数列表不同的方法;编译时,根据参数的个数和类型来决定绑定那个方法
重写是在自子类文件中定义父类完全相同的方法,在程序运行时根据对象的类型不同,而调用不同的版本。
重载:遵循“编译器绑定”根据引用类型
重写:遵循“运行期绑定”,根据对象类型
重写的注意事项:
- 两同两小一大的原则
- 两同:1.方法名相同;2.参数列表相同
- 两小:1.子类的返回类型小于等于父类;2.子类抛出的异常小于或等于父类
- 一大:子类的访问权限大于等于父类
7、static
1)修饰成员变量
- 由static修饰
- 属于类。存在方法区,只有一份
- 通常通过类名点来进行访问
- 通常通过类名点来进行访问
- 没有隐式的this传递
- 静态方法中不能访问实例成员
8、final
- 修饰变量:变量不可改变
- 修饰方法:方法不可重写
- 修饰类:类不可被继承
9、抽象方法
1)由abstract修饰
2)包含抽象方法的类必须是抽象类
3)抽象类不能被实例化
4)抽象类是需要被继承的
5)抽象类的意义:
a封装子类共有的数据和行为------代码的重用
b为子类提供了一种统一的类型------父类型
c包含抽象方法,为所有的子类提供了一个入口
10、接口
1)由interface定义
2)只能包含常量和抽象方法
3)接口不能被实例化
4)接口需要被实现(implements)重写接口中所有的抽象方法
5)可以多接口实现,若又继承又实现时,先继承在实现
6)接口间可以继承
11、面向对象的三大特征:
1)封装
2)继承
3)多态