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]