方法的覆盖

来源:互联网 发布:在手机上怎么改淘宝名 编辑:程序博客网 时间:2024/04/30 03:01

2、  方法覆写:

·子类方法的名称、参数名、返回类型与父类方法一致。

·子类方法不能缩小父类方法的访问权限。

·子类方法不能抛出比父类方法更多的异常子类。

·父类的静态方法不能被子类覆盖为非静态方法。(一下代码会导致编译错误)。

public class Sup {

    public static void methed1(){

    }

}

public class Sub extends Sup {

    public void  methed1(){  /*警告,编译有错误*/

    }

}

·子类可以定义与父类的静态方法同名静态方法,以便在子类中隐藏父类的静态方法。(但是也必须满足:子类方法的名称、参数名、返回类型与父类方法一致、子类方法不能缩小父类方法的访问权限、子类方法不能抛出比父类方法更多的异常子类的条件)

·子类的非静态方法不能被子类覆盖未静态方法。(编译出错)

public class Sup {

    public void methed1(){

    }

}

public class Sub extends Sup {

    public static void  methed1(){  /*警告,编译有错误*/

    }

}

 

·所以由上面可以知道:子类复写与父类时,方法只能同时为Static,而不能一个为static一个不是static类型。

·父类的抽象方法可以被子类通过两种途径覆盖:1,、子类实现了父类的抽象方法;2、是子类重新声明父类的抽象方法。

public abstract class Sup {

    abstract void methed1();

    abstract void methed2();

}

public abstract class Sub extends Sup {

    void  methed1(){//实现父类的方法

    }

     abstract void  methed2();//重新声明method2方法。

}

·父类的非抽象方法可以被覆盖未抽象方法。

public abstract class Sup {

    void methed1(){

    }

}

public abstract class Sub extends Sup {

     abstract void  methed1();//合法

}