扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
@Override 的作用是:如果想重写父类的方法,比如toString()方法的话,在方法前面加上@Override 系统可以帮你检查方法的正确性。
创新互联建站技术团队10多年来致力于为客户提供成都网站设计、网站建设、高端网站设计、全网营销推广、搜索引擎SEO优化等服务。经过多年发展,公司拥有经验丰富的技术团队,先后服务、推广了近千家网站,包括各类中小企业、企事单位、高校等机构单位。
Override的用法:Override:java.lang.Override是一个marker annotation类型,它被用作标注方法。它说明了被标注的方法重载了父类的方法,起到了断言的作用。
扩展资料
@Override 使用方法:
在使用此annotation时只要在被修饰的方法前面加上@Override。
下面的代码是一个使用@Override修饰一个企图重载父类的toString方法,而又存在拼写错误的sample:清单1:@Override public String toSting() { // 注意方法名拼写错了 return "[" + super.toString() + "]";} 。
会。
当子类中的方法与父类中的方法具有相同的返回类型和签名时,就称子类中的方法重写。
若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
Class A {
Public void show(){
System.out.println(“显示图片”);
}
Class B exstends A { //B类是子类,继承A类
Public void show(){
System.out.println(“显示动态图片”);
} //
我们就称B类中的show方法重写了A类中的show方法。
这里考虑覆盖关系还要考虑类的初始化顺序
这里其实是涉及类的初始化。
因为有继承关系,所以它在调用子类Atest()构造器前,先调用了父类的构造器,有个隐藏的 super();调用,但因为test()被覆盖,它会调用子类的test(),这时子类的成员变量只是定义,还未进行初始化赋值,而int型的默认初始值为0,如果你把i变成String型,你会发现第一次输出为null
子类已经覆盖了父类,并且重写了父类的方法, 一般来说, 就没有必要用子类调用父类中被覆盖的方法了.(否则就不要覆盖了啊)
要实现也是可以的 ,我们 需要为子类提供一个其他的方法,用于去调用父类中被覆盖的方法
参考代码
class A {//父类
public void print() {
System.out.println("父类的print方法");
}
}
class B extends A {//子类
@Override
public void print() {
System.out.println("子类的print方法");
}
// 在子类里创造一个方法去调用父类的方法
public void fuLeiPrint() {
super.print(); //super指向父类
}
}
public class Test {
public static void main(String[] args) {
B b = new B();
b.print();
b.fuLeiPrint();
// A a =(A)b; // 这样强转还是打印的子类的方法,因为内存中还是子类
// a.print();
}
}
一,"如何在子类重写(覆盖)父类的方法"
这个术语叫“重载”。很简单,首先把父类方法原封复制到子类里,然后修改函数体就可以。注意函数签名不能变。
二,如何在子类方法中调用父类方法的变量值来用
这是做不到的,不可能在一个函数中调用另一个函数的局部变量。父类的属性是有可能用的,因为子类会继承父类的public和protected属性。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流