代码块
在Java中使用 { } 将代码包裹起来
局部代码块: 在局部位置(方法中定义)
作用:限定变量的生命周期;
构造代码块: 在类中的成员位置
作用:将构造方法中相同的代码使用 { } 提取出来,每次执行构造方法之前都会优先执行构造代码块;
静态代码块: 在类中的成员位置
作用:给类中进行初始化,只执行一次;
继承 extend
将共有的属性、行为提取到独立的类(父类/超类);独立的类和其他类产生一种“继承”关系;
子类,也叫派生类;
继承的好处
- 提高代码的复用性
- 提高后期代码的维护管理性
- 让类与类之间产生一种关系
继承的特点
- 在Java语言中,继承只支持单继承,不支持多继承
- 虽然不支持多继承,但是可以多层继承
继承中的注意事项
- 子类不能继承父类的私有成员(成员变量、成员方法)
- 子类不能继承父类的构造方法,但是可以通过super关键字调用
- 不能为了部分功能随便使用“继承”
类的成员:成员变量、构造方法、成员方法
继承中成员变量的关系问题(面试题)
- 子类的成员变量名称和父类成员变量名称不一致时:
通过子类调用成员方法分别输出对应父类的成员变量和子类的成员变量; - 当子类的成员变量名称和父类成员变量名称一致时:
首先在子类的局部位置中找,有就输出;没有就到成员位置找,有就输出;
如果子类的成员位置找不到,就到父类中的成员位置找,有就输出;
如果父类的成员位置找不到,就报错!
继承关系中构造方法的初始化
- 子类的无参构造方法、有参构造方法,都会默认访问父类的无参构造方法;因为子类会继承父类中的数据,可能还会使用父类的数据,所以子类初始化之前,一定要先完成父类数据的初始化(分层初始化);每一个构造方法的第一条语句默认都是 super ( );
this和super的区别
- this表示子类对象的引用
- super跟父类相关,代表父类的引用
问题:
1.在show ( ) 方法中怎样去访问子类的成员变量?
答:this就可以代表当前子类对象的引用
2.同理,怎样去访问父类中的成员变量?
答:使用 super.变量名;super代表父类的空间标识(父类对象的地址引用)
成员变量、成员方法和构造方法分别用this和super的调用格式
- this.成员变量;
super.成员变量; - this.成员方法名();
super.成员方法名(); - this.构造方法(变量名,…);
super.构造方法(变量名,…);