java继承中的重写⽗类⽅法
重写⽗类⽅法
⼦类扩展(extends)了⽗类,⼦类是⼀种特殊的⽗类。⼦类可以获得⽗类所有的属性和⽅法,达到代码复⽤的⽬的。⼦类总以⽗类为基础增加新的属性和⽅法。但是有时候我们还需要重写(覆盖)⽗类的⽅法。
⼦类覆盖⽗类的⽅法遵循的是“两同两⼩⼀⼤”原则。两同指的是⽅法名和形参列表相同。两⼩指的是⼦类⽅法的返回值类型要⼩于或等于⽗类被覆盖⽅法的返回值,⼦类⽅法声明抛出的异常应⽐⽗类⽅法抛出的异常要⼩或相等。⼀⼤指的是⼦类⽅法的访问权限应该⽐⽗类⽅法要⼤或相等。尤其要注意的是,覆盖⽅法和被覆盖⽅法要么都是类⽅法,要么都是实例⽅法,不能⼀个是类⽅法,⼀个是实例⽅法,否则回报编译错误。代码如下:
class SuperClass{
public void test(){}
public void test1(){}
}
class SubClass extends SuperClass{
//注释掉了,编译时会报This static method cannot hide the instance method from SuperClass
//public static void test(){}
@Override
public void test1(){}
}
如果⽗类⽅法具有private访问权限,则该⽅法对⼦类是隐藏的,⼦类是不能访问到的,也不能覆盖该⽅法。如果⼦类定义了与⽗类private ⽅法相同的⽅法名,则该⼦类只不过是新定义了⼀个⽅法⽽已。
⼦类和⽗类⽅法的重载
⽅法重载 overload,⽅法重写override。⽅法重载是发⽣在同⼀个类中多个同名法之间。⽅法重写是发⽣在⽗类和⼦类的同名⽅法之间。 ⼦类拥有⽗类所有的⽅法,如果⼦类也定义了和⽗类⽅法名形同,但形参列表不同的⽅法,那么就发⽣了⼦类⽅法和⽗类⽅法的重载。代码如下:
public class ExtendsTest {
public static void main(String [] args){
SubClass sub = new SubClass();
sub.print("ABC");
sub.print("ABC", "DEF");
}
}
class SuperClass{
public void print(String s1){java重写和重载的区别
System.out.println(s1);
}
}
class SubClass extends SuperClass{
public void print(String s1, String s2){
System.out.println(s1+"、"+s2);
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。