代码块:
定义: 被大括号括起来的代码片段
分类:
局部代码块
写在方法中
用来限定变量的生命周期, 及早释放内存
构造代码块
写在类中 方法外
每次创建对象都会执行, 优先于构造方法执行
静态代码块
写在类中 方法外
随着类的加载而加载, 且只执行一次
用来为类进行初始化
(同步代码块)
继承:
定义: 让类与类之间产生关系
好处:
提高了代码的复用性
提高了代码的维护性
让类与类之间产生关系, 是多态的前提
缺点:
增强了类的耦合性
内聚: 独立完成某件事的能力
开发的原则:
高内聚, 低耦合
特点:
Java中只有单继承, 没有多继承, 有多层继承
如果想看共性的功能, 看最顶层的类
如果想使用所有的功能, 用最底层的类创建对象
注意事项:
子类不能继承父类中私有的成员
子类不能继承父类的构造方法
不要为了部分功能去继承
使用场景:
如果存在两个类, A和B, 如果A是B的一种, 或者B是A的一种, 就可以考虑使用继承
this和super:
this代表当前对象的引用
super代表当前父类对象的引用
调用成员变量(方法):
this.成员变量: 既可以调用本类的成员变量, 还可以调用父类的成员变量
super.成员变量: 只能调用父类的成员变量
构造方法:
this(...)
super(...)
与成员的关系:
成员变量: 就近原则
构造方法:
子类在初始化之前, 要先完成父类的初始化(先有父亲再有儿子)
子类中所有的构造方法的第一条语句都默认去访问父类的空参构造
* 如果一个类没有继承任何类, 那么就默认继承Object类
成员方法:
不管子类中的方法与父类中的方法是否重名, 都运行子类的方法, 如果子类中没有, 再去父类找(先找子类, 再找父类)
方法的重写:
定义: 子父类中出现了一模一样的方法, 连返回值也是一致的
应用场景: 当子类需要父类的共性功能, 而功能主体的子类又有自己的特定内容时, 可以重写父类的方法
注意事项:
子类不能重写父类中的私有方法
子类重写父类的方法时, 访问权限不能更低, 最好一致
静态只能覆盖静态
override和overload的区别:
override:
子父类中出现了一模一样的方法, 连返回值也是一致的
overload:
方法名相同, 参数列表不同, 与返回值类型无关
final:
特点:
修饰类: 类不能被继承
修饰方法: 方法不能被重写
修饰变量: 变量就变成了常量, 且只能赋值一次, 一般与public static一起使用
基本数据类型:
值不能被改变
引用数据类型:
地址值不能被改变, 也就是说只能创建一次对象, 但是可以修改对象的属性
被final修饰后成员变量的初始化时机
显式初始化
构造方法初始化
注意:
系统的默认初始化值是无效的
显式初始化与构造方法初始化两种方式不能同时使用 |