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());//9
		a = new C();
		System.out.println(a.method());//12
		a = new D();
		System.out.println(a.method());//75
		
		B b = new B();
		System.out.println(b.method());//9
		
		C c= new C();
		System.out.println(c.method());//12
		
		D d=new D();
		System.out.println(a.method());//75
		
		C 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("这个有参数了");
    }
}

你可能感兴趣的:(java,C++,c,C#)