本文已参与「新人创作礼」活动,一起开启掘金创作之路。
四种访问权限修饰符
-
四种访问权限修饰符
- public、default(不写)、protected、private
- 如果子类和父类在同一个包下,那么对于父类的成员修饰符只要不是private,那就都可以使用
- 如果子类和父类不在同一个包下,子类只有使用父类中的 protected和public成员
关键字super
-
关键字super
-
在java类中使用super来调用父类中的指定操作:
- super可用于访问父类中定义的属性
- super可用于调用父类中定义的成员方法
- super可用于在子类构造方法中调用父类的构造器
-
注意
- 尤其当子父类出现同名成员时,可以用super来区分
- super的追溯不仅限于直接父类
- super与this的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识
- 举例
-
练习
- 第一题:修改定义的类Kids中的employed()方法,在该方法中调用父类ManKind的employed()方法,然后输出“but kids should study and no job!”
- 第二题:在TestCylinder中求圆柱体表面积
- 第三题:在TestCylinder中创建Circle对象,设置半径,计算圆的面积
-
调用父类的构造器
- 子类中所有的构造器默认都会访问父类中空参数的构造器
- 当父类中没有空参数的构造器时,子类的构造器必须通过this(参数列表)或者super(参数列表)语句指定调用本类或者父类中相应的构造器,且必须放在构造器的第一行。(当父类只有有参构造可以使用时,子类必须显式构建一个有参构造来调用父类的有参构造,并且调用父类的构造方法要写在第一行)
- 如果子类构造器中既未显式调用父类或本类的构造器,且父类中又没有无参的构造器(当然如果父类同时拥有有参和无参构造也不会报错,因为子类默认调用父类的无参构造),则编译出错。
-
this和super的区别
- 注:因为this和super调用构造器都必须放首行,所以只能使用一个
-