代码块,继承,方法重写与方法重载的区别和final关键字的理解

一、代码块
(1)就是用{}括起来的代码
(2)分类:
A:局部代码块
用于限定变量的生命周期,及早释放,提高内存利用率。
B:构造代码块
把多个构造方法中相同的代码可以放到这里,每个构造方法执行前,首先执行构造代码块。
C:静态代码块
对类的数据进行初始化,仅仅只执行一次。
(3)静态代码块,构造代码块,构造方法的访问顺序:
静态代码块 > 构造代码块 > 构造方法
二、继承
(1)把多个类中相同的成员和属性给提取出来定义到一个类中,然后让这多个类和该独立的类产生一个关系,这多个类就具备了这些内容,这个关系叫继承。
(2)继承用关键字extends表示,格式 :
class 子类名 extends 父类名
(3)继承的好处:
a:提高了代码的复用性
b:提高了代码的维护性
c:让类与类产生了一个关系,是多态的前提
(4)继承的坏处:
在软件开发的过程中,要求的原则是低耦合,高内聚(耦合:类与类的关系,内聚:自己完成某件事的能力)。而多态让类的耦合性增强,这样某个类的改变,就会影响其他类和该类相关的类;还有个弊端是打破了封装性。
(5)继承的特点:Java中类只支持单继承,可以多层继承
(6)继承的注意事项:a.子类不能继承父类的私有成员 b.子类不能继承父类的构造方法,可以通过super去访问 c.不能为了部分功能而去继承
(7)Java继承中的成员关系
a.成员变量
1)子类的成员变量和父类中的成员变量名称不一样,这个不用说
2)子类的成员变量和父类中的成员变量名称一样的时候,这个该怎么访问?(采用就近原则的思想)子类的方法访问变量的查找顺序:在子类方法的局部范围找,有就使用。在子类的成员范围找,有就使用。在父类的成员范围找,有就使用。最后找不到,就报错。
b.构造方法
1)子类的构造方法默认会去访问父类的无参构造方法,是为了子类访问父类数据的初始化。2)父类中如果没有无参构造方法,怎么办?子类通过super去明确调用带参构造
;子类通过this调用本身的其他构造,但是一定会有一个去访问了父类的构造
c.成员方法
1)子类的成员方法和父类中的成员方法名称不一样,这个太太简单。2)当子类的成员方法和父类中的成员方法名称一样时,通过子类对象访问一个方法的查找顺序:在子类中找,有就使用;在父类中找,有就使用
三、方法重写与方法重载
a:什么是方法重写
子类中出现了和父类中一模一样的方法声明(方法名,参数列表,返回值类型),也被称为方法覆盖。
b.方法重写的应用:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,即使用了父类的功能,又定义了子类特有的内容。
c.方法重写注意事项
1)子类重写父类方法的时候,访问权限不能更低,最好声明一模一样。
2)父类中私有方法不能被重写,因为父类私有方法子类根本就无法继承
3)父类静态方法,子类也必须通过静态方法进行重写,其实算不上方法重写,但是事实确实这样。
四、final关键字的理解
a.为什么会有final
final关键字是最终的意思,可以修饰类,变量,成员方法。由于继承中有一个方法重写的现象,而有时候我们不想让子类去重写父类的方法.这对这种情况java就给我们提供了这个关键字
b.被final修饰的特点
修饰类:该类不能被继承
修饰方法:该方法不能被重写
修饰变量:该变量为一个常量,不能被修改。
c.final关键字修饰局部变量
1)基本类型,是一个值,不能被改变
2)引用类型,是一个地址值,不能被改变

你可能感兴趣的:(代码块,继承,方法重写与方法重载的区别和final关键字的理解)