重载和重写(overload and override)

来源:互联网 发布:js 识别浏览器 编辑:程序博客网 时间:2024/06/12 03:48
/* * study Override and  * 学习   覆盖(重写) 和  重载 */public class Test {//重载public void f(int a, int b){}//当函数名和参数相同时,不论返回值和方法修饰符是否相同,都不能编译过protected int f(int a, int b){ return a;}  //编译出错//包含抽象方法的类必须声明抽象类abstract void f(int a); //编译出错}


 

public class Test {   private void method(){};}class Sub extends Test{/*重写 : * 1.子类修饰符必须大于或等于父类的修饰符,返回类型,方法名,参数必须相同 * 2.子类方法不能抛出比父类方法更多的异常,或者子类的异常是父类异常的子类或相同 * 3.父类的静态方法不能被子类覆盖成非静态,反过来也是 * 4.子类与父类间static函数重写的一些特别********这条要注意 */public int method(){  //编译报错}public int method(int a){ //正确,重载return a;}}


3.

/* * study Override and  Overload * 学习   覆盖(重写) 和  重载 */public class Test {   public static void method(){}}class Sub extends Test{   public void method(){}  //编译出错}class Base{void method(){}}class Sub1 extends Base{static void method(){} //编译出错}


4.子类与父类间static函数重写的一些特别********这条要注意

/* * study Override and  Overload * 学习   覆盖(重写) 和  重载 */class Base{void method(){System.out.println("method of Base");}static void staticMethod(){System.out.println("staticMethod of Base");}}class Sub extends Base{void method(){System.out.println("method of Sub");}static void staticMethod(){System.out.println("staticMethod of Sub");}}public class Test {    public static void main(String[] args) {Base b1 = new Sub();b1.method(); // method of Subb1.staticMethod(); //这个注意了: staicMethod of BaseSub b2 = new Sub();b2.method(); //method of Subb2.staticMethod(); // staticMethod of Sub   }}


5.父类的私有方法不能被子类覆盖 ******注意了喔

/* * study Override and  Overload * 学习   覆盖(重写) 和  重载 */class Base{private void method(){System.out.println("method of Base");}public void print(){method();}}class Sub extends Base{public void method(){System.out.println("method of Sub");}}public class Test {    public static void main(String[] args) {Base b1 = new Sub();b1.print();  //method of Base/* * 若果把Base的method改成 public void method() * b1.print(); //method of Sub */   }}

 

6.父类的非抽象方法可以被覆盖为抽象方法

public class Test{void method(){}}abstract class Sub extends Test{public abstract void method();  //合法}


 


 

 

原创粉丝点击