简单来说,就是子类中重写的方法,既需要调用父类的方法,又需要再额外增加一些自己的东西。已经在Java的继承这篇文章中使用过super关键字了。
创新互联公司是一家集网站建设,蓝山企业网站建设,蓝山品牌网站建设,网站定制,蓝山网站建设报价,网络营销,网络优化,蓝山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。简单来说:super代表父类的引用,用于访问父类的属性,方法和构造器。
abstract class Report{
void setReport(){
//设置报告
}
void printReport(){
//打印报告
}
}
class sonReport extends Report{
@override
void setReport(){
super.setReport(); //使用super关键字调用父类的setReport()方法,调用完后再继续往下走。
myselfReportMethod();
printReport();
}
}
二、super关键字详解1、能够分工明确,父类属性由父类初始化,子类属性由子类初始化。
class computer{
String cpu;
int memory;
int disk;
}
public class PC extends Computer{
private String brand;
public PC(String cpu, int memory, int disk, String brand){
super(cpu, memory, disk);
this.brand = brand;
}
}
2、如果子类中的成员有和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super。如果没有重名,用super, this和直接调用是一样的效果。例如:下面的代码,如果子类中没有重名的方法,那他们效果是一样的,都是调用父类中的cal方法,但是如果子类PC中也有一个cal方法,那么直接调用和this.cal()就是调用的子类PC中的cal方法,而super.call()还是调用父类Computer中cal方法。
使用父类可访问方法的三种方式:(访问属性和方法的这个顺序一样)
class Computer{
String cpu;
int memory;
int disk;
int i = 100;
public void cal(){
}
}
public class PC extends Computer{
private String brand;
int i = 888;
public PC(String cpu, int memory, int disk, String brand){
super(cpu, memory, disk);
this.brand = brand;
}
public void sum(){
//想要在这里调用cal方法
//第一种方式:直接调用
//这种方式它会向上去找cal方式,顺序是:
//(1) 先找本类,如果有就调用
//(2) 如果没有,就向上去找父类(如果有,并可以调用(private的就不可以调用),就调用)
//(3) 如果父类没有,则继续去找父类的父类,一直向上,直到找到object类。
//注意:如果在查找方法的过程中找到了,但是不能访问,是会报错的。没有找到,提示方法不存在
cal();
//第二种方式:this
//this.call和上面的第一种是完全等价的,查找顺序也是完全一样的
this.call();
//第三种方式:super
//与上面两种方式不同,它没有第一步,而是直接从第二步开始去找父类的,其他的都一样。哪怕自己的子类有一个cal方法,他也不会去调用。
super.call();
sout(i); //--->888
sout(this.i); //--->888
sout(super.i); //--->100
}
}
四、super和this的比较
super关键字和this关键字很相似,但super关键字是用于访问父类,this关键字是用于访问本类。
Fig.1 super关键字和this关键字的比较
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧