3.重载与重写的区别?分别是什么?

1 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
–》改参数类型,数量

`public class Overloading {`
 `public int test(){`
 `System.out.println("test1");`
 `return 1;`
 `}`
 
 `public void test(int a){`
 `System.out.println("test2");`
 `}` 
 
 `//以下两个参数类型顺序不同`
 `public String test(int a,String s){`
 `System.out.println("test3");`
 `return "returntest3";`
 `}` 
 
 `public String test(String s,int a){`
 `System.out.println("test4");`
 `return "returntest4";`
 `}` 
 
 `public static void main(String[] args){`
 `Overloading o = new Overloading();`
 `System.out.println(o.test());`
 `o.test(1);`
 `System.out.println(o.test(1,"test3"));`
 `System.out.println(o.test("test4",1));`
 `}`
`}`

2 重写(Override)
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
重写是父类与子类之间多态性的表现形式,重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
子类—》父类
当需要在子类中调用父类的被重写方法时,要使用 super 关键字。

`class Animal{`
 `public void move(){`
 `System.out.println("动物可以移动");`
 `}`
`}`
 
`class Dog extends Animal{`
 `public void move(){`
 `super.move(); // 应用super类的方法`
 `System.out.println("狗可以跑和走");`
 `}`
`}`
 
`public class TestDog{`
 `public static void main(String args[]){`
 
 `Animal b = new Dog(); // Dog 对象`
 `b.move(); //执行 Dog类的方法`
 
 `}`
`}`

总结:
重载和重写都实现了多态
image.png
image.png
来自https://www.runoob.com/java/j...

你可能感兴趣的:(java)