java复习第1天---1.2---继承
目录
内容
1、继承格式
修饰符 子类名 extends 父类名{}
例如:
class A{}
class B extends A{}
extends为继承关键字
2、成员变量的访问特点
在继承关系中,成员变量访问规则如下:
-
父类方法只能访问父类成员变量
-
子类方法优先访问子类的成员变量,如果没有在访问父类成员变量
-
本地变量优先级最高
-
示例代码2-1:
package inherited.var; public class Father { int num = 20; public void show() { System.out.println(num); } } package inherited.var; public class Son extends Father{ int num = 10; public void show() { int num = 30; System.out.println(num); System.out.println(this.num); System.out.println(super.num); } } package inherited.var; public class TestVar1 { public static void main(String[] args) { Son s1 = new Son(); s1.show(); } } 结果: 30 10 20
3、成员方法访问特点
访问规则同成员变量。
4、方法重写
4.1、方法重写与方法重载区别
-
方法重写:override
- 方法名和参数列表一致
- 返回值范围小于等于父类方法返回值范围
- 子类方法访问权限要大于等于父类方法的访问权限
- 权限范围:public > protected(default) > private
-
方法重载:overload
- 方法名相同
- 参数不同
- 参数数量不同
- 参数类型不同
4.2、方法重写作用
软件开发思想之一:开闭原则-对修改关闭,对扩展开放。即已经封装好的功能,尽量不在修改。如果想要对原有功能扩展,可以使用方法重写扩展原有功能。
-
示例4.2-1:10年前手机功能:打电话、发短信、显示号码,现在手机不仅能显示号码,还可以显示姓名,显示头像。
-
代码4.2-1:
package inherited.override; public class Phone { public void call() { System.out.println("打电话"); } public void info() { System.out.println("发短信"); } public void show() { System.out.println("显示号码"); } } package inherited.override; public class NewPhone extends Phone{ public void show() { super.show(); System.out.println("显示姓名"); System.out.println("显示头像"); } } package inherited.override; public class OverrideTest1 { public static void main(String[] args) { NewPhone np = new NewPhone(); np.call(); np.info(); np.show(); } }
5、构造方法
-
规则:
- 调用子类构造方法,会默认调用父类无参构造方法
- 如果要显示调用,则用super(),且必须写在子类构造方法第一行。
- 显示调用父类构造方法,不能多次调用,最多一次
-
示例代码5-1:
package inherited.constructor; public class Father { public Father() { System.out.println("父类无参构造方法"); } public Father(int a) { System.out.println("父类带参构造方法"); } } package inherited.constructor; public class Son extends Father{ public Son() { System.out.println("子类无参构造方法"); } public Son(int a) { System.out.println("子类带参构造方法"); } public Son(double a) { super(2); System.out.println("子类带参构造方法"); } } package inherited.constructor; public class TestConstructor1 { public static void main(String[] args) { //Son s1 = new Son(); //Son s2 = new Son(2); Son s3 = new Son(2.0); } } 结果: s1 父类无参构造方法 子类无参构造方法 s2 父类无参构造方法 子类带参构造方法 s3 父类带参构造方法 子类带参构造方法
6、this与super
- this:指向调用对象
- this.成员变量
- this.成员方法
- super:指向父类
- super.成员变量
- super.成员方法
- super() 父类构造方法
后记 :
本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785
前端项目源代码地址:https://gitee.com/gaogzhen/vue-leyou
后端JAVA源代码地址:https://gitee.com/gaogzhen/JAVA