java 继承中的重写父类方法
2015-05-10 16:49
295 查看
重写父类方法
子类扩展(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){ System.out.println(s1); } } class SubClass extends SuperClass{ public void print(String s1, String s2){ System.out.println(s1+"、"+s2); } }
相关文章推荐
- Java中的类成员访问控制符和继承重写父类的方法时的类成员访问控制符的相关问题
- java继承 子类重写父类方法
- JAVA_继承演示03_ExtendsDeamo01.java super关键字 重写父类的方法,中,调用父类的方法
- JAVA_继承演示03_ExtendsDeamo01.java super关键字 重写父类的方法,中,调用父类的方法
- JAVA中子类是否可以可以继承、重写父类的静态方法--总结
- 关于Java中子类能否继承和重写父类的静态方法问题
- java 子类继承父类成员变量的隐藏、实现方法的重写
- JAVA,假重写,方法假重写,继承父类时的静态方法假重写,静态方法假重写
- Java 子类继承父类方法的重写(或者覆盖,override)
- 2018/01/07JAVA 基础 / 接口与继承:重写【子类继承并覆盖父类的对象方法】、隐藏【子类继承并覆盖父类的类方法】与实现类实现接口方法の区别
- java中父类有static修饰的方法其子类能继承吗?若子类也有该方法,是覆盖还是重写?
- Java 理解 子类成员变量与父类成员变量同名 方法的重写
- JavaDay06--Homework(方法重载和重写的区别,构造方法,继承类)
- Java 使用反射观察子类是否继承了父类的私有方法
- [Java]static、final修饰的方法是否可以被子类继承、是否可以被子类重写及final修饰详解
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳
- 2018/01/08JAVA 基础 / 接口与继承:调用父类/子类的类方法、对象方法,访问父类的类属性、对象属性的方式汇总
- 2018/01/08JAVA 基础 / 接口与继承:[Q]:若父类Hero提供了一个有参的构造方法,但是没有提供无参的构造方法。子类应该怎么处理?
- 栋哥带你学Java类的继承和方法的重写
- JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍