覆盖和重载Java继承中的方法

 作者:池呗柩     |      日期:2017-11-12 01:05:12
在类继承中,子类可以修改从父类继承的方法,这意味着子类可以创建一个方法,该方法具有与父类方法不同的函数,但具有相同的名称,返回值类型和参数列表如果在新类中定义一个方法,其名称,返回类型和参数列表与父类完全相同,则新方法称为覆盖旧方法参数列表也称为参数签名,包括参数的类型,参数的数量和参数的顺序只要存在差异,参数列表就会被称为不同重写的方法只能由子类中的super调用注意:重写不会删除父类中的方法,但会隐藏子类的实例,并且暂时不使用它们请参阅以下示例:public class Demo {public static void main(String [] args){Dog myDog = new Dog("行行圈"); myDog.say(); // subclass instance caller类Animal中的方法myAnmial = new Animal("行行圈在线"); myAnmial.say(); //父类的实例调用父类中的方法}}类Animal {String name; public Animal(String Name){this.name = name; } public void say(){System.out.println("我是一个小动物,我的名字是“+名字+”,我会打个电话“}}}类Dog extends Animal {//构造函数不能被继承,通过super(){super(name);}调用public((name))//覆盖say()方法public void say(){System.Out.println("我是小狗,我的名字是“+姓名+”,我会拨打一个响亮的电话“”;}}}我是一只小狗,我的名字就行了,我会打个电话我是一只小动物我的名字是线圈在线我将发布覆盖声音方法的原则:覆盖方法返回类型,方法名称和参数列表必须与原始方法相同覆盖方法不能比原始方法更容易访问(是,访问权限不允许收缩)覆盖方法不能抛出比原始方法更多的异常被覆盖的方法不能是最终类型,因为最终装饰的方法不能覆盖伊顿被重写的方法不能是私有的,否则只在其子类中定义一个新方法,并且不会覆盖该方法被覆盖的方法不能是静态的如果父类中的方法是静态的,并且子类中的方法不是静态的,但是这两个方法满足除此之外的覆盖条件,则会发生编译错误;反之亦然即使父类和子类中的方法是静态的并且满足coverage条件,也不会发生覆盖,因为静态方法在编译时将静态方法与类的引用类型匹配推荐阅读:Java一天的实践继承http://www.hanghangq.com/train/lesson_detail.php?lid=155方法重载:我已经解释了Java方法重载,这里再次说明了父方法和子类中的Java方法参与超载例如,父类中的一个方法是func(){...},子类中的一个方法是func(int i){...},它构成了方法的重载覆盖和重载之间的区别:方法覆盖要求参数列表必须一致,并且方法重载要求参数列表必须不一致方法覆盖要求返回类型一致,并且方法重载不需要此方法方法覆盖只能用于覆盖父方法的子类方法重载用于同一个类中的所有方法(包括从父类继承的方法)方法覆盖方法的访问权限,抛出异常有特殊要求,方法重载在这方面没有限制父类的方法只能由子类重写一次,