陈小兵 发表于 2013-1-26 16:25:19

java中的重写与重载

方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,
重载Overloading是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

注意:Overloaded的方法是可以改变返回值的类型。

重写(Override):
abstract class A {   int a=1;       abstract int method();}public class B extends A{ int a=3;   public int method(){    return a*a;   }}public class C extends B {int b=4;public int method(){return a*b;}}public class D extends A{int r = 5;public int method() {return (int) Math.PI * r * r;}}public class Demo {       public static void main(String []args)       {   A a = new B();System.out.println(a.method());//9a = new C();System.out.println(a.method());//12a = new D();System.out.println(a.method());//75B b = new B();System.out.println(b.method());//9C c= new C();System.out.println(c.method());//12D d=new D();System.out.println(a.method());//75C c1=(C) new B();System.out.println(c.method());//运行出错       }}

重载(Overload):
public claa Overload{    public void test()    {      System.out.println("无形参方法");    }    public void test(String temp)    {      System.out.println("有形参方法,形参为" + temp);    }    public static void main(String[] args)    {       Overload fang = new Overload();       //下面调用第一个无参数方法      fang.test();       //下面调用第二个有参数方法      fang.test("这个有参数了");    }}
页: [1]
查看完整版本: java中的重写与重载