JAVA重载和重写,不要再傻傻分不清楚

Java语言提供了重写和重载的特性,本人在学习的时候也是经常把两者混淆,相信各位朋友也遇到过与我一样的问题,现在我就举例说明,让大家真正理解掌握这两者的区别

我们先来说一下重写,那什么是重写呢?

重写:当一个子类继承一个父类时,它同时继承了父类的属性和方法,子类可以直接使用父类的属性和方法,如果父类的方法不能满足子类的需求,则可以在子类中对父类的方法进行重写(或覆盖),打个比方:你爸给了你一块饼,让你一口一口咬着吃,但不满足你想尝试新鲜吃法的需求,所以你就用刀切割成小块,用叉子一块一块的叉着吃,嘿嘿

在重写的时候需要注意:

  1. 重写方法名,参数和返回类型必须与父类方法定义一致
  2. 重写方法的修饰符不能比父类方法严格,例如父类方法时用public修饰,那么重写方法不能使用protected或private等修饰
  3. 重写方法如果有throws定义,那么重写方法throws的异常类型可以是父类方法throws的异常类型及其子类类型

说了那么多,现在上代码,对于IT行业来说实战最重要:

public class TestOverride {

    public static void main(String[] args) {
        TestParent tt = new TestSub();
        tt.testPrint();
    }

}

class TestParent{

    public void testPrint(){
        System.out.println("父类的输出方法");
    }

}


class TestSub extends TestParent{

    //重写父类方法
    @Override
    public void testPrint(){
        System.out.println("重写父类方法后,子类的输出方法");
        int a = 0;
        int b = 1;
        System.out.println("a+b="+(a+b));
    }
}

错误示例:

说完了重写,继续说说重载,那什么又是重载呢?

重载:Java中,同一个类中不允许有两个相同定义的方法,因为编译器无法将方法调用和特定的方法联系起来,但是允许在同一个类中具有多个方法名相同而参数列表不同的方法,这种形式被称为方法的重载。注意:方法的返回类型不是区分方法相同的标识,因此在方法重载时,同一个类中不能有两个方法名相同,参数相同,返回类型不同的方法。

具体来看看实例吧:

public class TestOverload {

    public static void main(String[] args) {
        TestOverload testOverload = new TestOverload();
        Map<String,String> map = new HashMap<>();
        String temp ="abc";
        testOverload.test(map,temp);
        testOverload.test(temp,map);
    }

    public void test(Map<String,String> map,String id){
        System.out.println("我的参数是 Map 类型与String类型");
    }

    public void test(String id,Map<String,String> map){
        System.out.println("我的参数是String类型与Map 类型");
    }
}

执行结果如下:

扫描二维码关注公众号,回复: 10729163 查看本文章

好了,另外再截个图,看看小伙伴们有没有猜出来是什么原因导致的错误啊:

 

欢迎大家入群交流,虫洞栈公众号的作者坐阵本群,有机会与大神面对面,赶紧来哦

发布了8 篇原创文章 · 获赞 0 · 访问量 128

猜你喜欢

转载自blog.csdn.net/ka530888/article/details/104783142