1. 静态方法和非静态方法
静态方法(static)--class调用,非静态方法--实例化调用
2. 值传递和引用传递
3. 类的构造器
- 一旦定义了有参构造,无参构造必须显式定义
- 构造器用来初始化对象的某些数据
4. 创建对象时内存分析(简)
1. 对象的引用名存放在栈中,对象的实例存放在堆中,栈中的引用变量名指向堆中的实例,方法区存放类的属性、方法和静态方法区(static方法,和类一起加载),方法区也是一种特殊的堆
5. 封装(private)
高内聚,低耦合--高内聚指的是类的内部数据操作细节自己完成,不允许外部干涉。低耦合指仅暴露稍少量方法供外部使用
对象--属性私有(private关键字)、 提供一些public 的get\set方法来获得这些私有属性
封装的意义:
- 提高程序安全性,保护数据(仅通过get/set访问)
- 隐藏代码的实现细节
- 统一接口
- 增加系统可维护性
6. 继承
tip: ideas中鼠标定位到某个class中使用快捷键ctrl+H,可以查看类层次结构
tio: option + Enter自动补充完整本地变量(MAC)
要点:
super:
1. super调用父类的构造方法,必须在构造方法的第一个
2. super智能出现在子类的方法或者构造方法中
3. super和this不能同时调用构造方法
4. super()表示调用父类的构造方法
this:
1. 本身调用者这个对象
2. 代表父类对象的应用
3. this没有继承也可以使用,super只能在继承条件下使用
4. this()表示调用本类的构造方法
7. 多态
1. 子类能调用的方法都是自己的或者继承父类的
2. 父类,可以指向子类,但是不能调用子类独有的方法
3. 多态是指(方法)的多态
4. 多态是父类和子类直接的关系(继承),方法需要重写(父类和子类如果都有该方法,注意和重载的区分,另外被static, final,private修饰的方法没法被重写),父类的引用指向子类对象。
8. 子类和父类直接的转换
1. 前提:父类引用指向子类对象
2. 把子类转换为父类,向上直接转换
3. 把父类转换为子类,向下转型,需要强制转换,可能会丢失一些方法
9. static关键字
10. 抽象类(单继承,对比接口--多继承)
1. abstract 关键字定义,如果abstract加在方法名中,表示抽象方法(只有方法名,没有方法的实现)
2. 抽象类的所有方法,继承了该抽象类的子类,都必须要实现它的方法
3. 抽象类不能new出来,只能靠子类取实现它:抽象类仅仅作为约束作用
4. 抽象类中可以写普通方法
5. 抽象方法必须在抽象类中定义
11. 接口
1. 抽象类:extends~
类 可以实现接口 implements 接口
实现了接口的类,就需要重写接口中的方法
多继承~利用接口实现多继承
2. 作用:
1. 约束
2. 定义一些方法,让不同的人去实现~
3. public abstract 修饰接口中的方法
4. public static final 修饰接口中的常量(不常用)
5. 接口不能被实例化,接口中没有构造方法
6. implements可以实现多个接口
7. 必须要重写接口中的方法
12. 内部类