没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
一、super关键字的使用
(1)为什么需要super?
(2)super的理解
(3)super可以调用的结构
1、super调用方法
举例1
举例2
举例3
小结
2、super调用属性
举例1
举例2
举例3
小结
3、super调用构造器
引入
举例1
举例2
举例3
举例4
4、总结
super调用方法、属性
super调用构造器
(4)小结:this与super
1、this和super的意义
2、this和super的使用格式
(5)练习
1、练习1
2、练习2
3、练习3
(6)面试题
1、第一题
2、第二题
3、第三题
4、第四题
二、子类对象实例化全过程
(1)介绍
(2)举例
一、super关键字的使用
(1)为什么需要super?
举例1:子类继承父类以后,对父类的方法进行了重写,那么在子类中,是否还可以对父类中被重写
的方法进行调用?
可以!
举例2:子类继承父类以后,发现子类和父类中定义了同名的属性(若子类造对象,就会有两个同名
属性),是否可以在子类中区分两个同名的属性?(方法可以覆盖,属性不能覆盖)
可以!
如何调用? 使用 super 关键字即可。
(2)super的理解
super的理解:父类的
在子类中,若想调用父类中被重写的方法,就用 super.方法 即可;若想调用父类中的属性,就用
super.属性 即可。
若没有写super,调用的就是子类中重写的方法和子类里面声明的属性。
在Java类中使用super来调用父类中的指定操作:
super可用于访问父类中定义的属性
super可用于调用父类中定义的成员方法
super可用于在子类构造器中调用父类的构造器
注意:
尤其当子父类出现同名成员时,可以用super表明调用的是父类中的成员
super的追溯不仅限于直接父类
super和this的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识
(3)super可以调用的结构
super可以调用的结构:属性、方法、构造器
具体的:
1、super调用方法
如果子类没有重写父类的方法,只要权限修饰符允许,在子类中完全可以直接调用父类的方
法;
如果子类重写了父类的方法,在子类中需要通过 super. 才能调用父类被重写的方法,否则默
认调用的子类重写的方法
举例1
观察下面代码的输出结果。
【Person.java】
package yuyi01;
【Student.java】
【StudentTest.java】
public class Person {
//属性
String name;
private int age;
//方法
public void eat(){
System.out.println("人吃饭");
}
public void sleep(){
System.out.println("人睡觉");
}
}
package yuyi01;
public class Student extends Person {
//属性
String school;
//方法
public void study(){
System.out.println("学生学习");
}
//重写
public void eat(){
System.out.println("学生多吃有营养的食物");
}
public void sleep(){
System.out.println("学生保证每天不低于七小时睡眠");
}
}
package yuyi01;
public class StudentTest {
public static void main(String[] args) {
Student s1=new Student();
s1.eat();
s1.sleep();
}
}
若现在想调用父类中的eat()方法,很简单,只需要在前面写 super. 即可。(以不影响封装性为前
提)
【Student.java】
this.eat(); 直接在本类找,找到了,就直接调用本类的重写方法即可。
super.eat(); 直接在直接父类中找,找到了,就直接调用父类被重写的方法即可。
eat(); 是省略了 this. ,所以本质上也是调用本类中的方法,若本类中找不到,才会去父类中找。
测试类【StudentTest.java】
运行结果:
package yuyi01;
public class Student extends Person {
//属性
String school;
//重写
public void eat(){
System.out.println("学生多吃有营养的食物");
}
//...
public void show(){
eat(); //省略了this
this.eat();
super.eat(); //父类中的eat()方法
}
}
package yuyi01;
public class StudentTest {
public static void main(String[] args) {
Student s1=new Student();
//...
s1.show();
}
}
剩余63页未读,继续阅读
资源评论
雨翼轻尘
- 粉丝: 6w+
- 资源: 130
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功