Java - 重载和重写

Java中的重载以及重写

重载以及重写只能发生在方法中,其他的情况没有见过。但不包括以后会突然冒出来一个类或接口的一些什么玩法。这里我们只学习方法的重载以及重写。
在这里插入图片描述

1)重载

方法的重载:方法名相同,但是参数列表不同(决定性因素)。
在方法的重载中,只有参数列表是决定性因素,也就是只有参数能够决定方法的重载。
我们在学习Java中,很多时候会用到print()以及println()方法,仿佛这两个方法特别万能,什么都能够输出。其实在这里这两个方法是最典型的重载。
我们在此列出一些所重载的方法,如下:

public void fun(){}
public void fun(int a){}
public void fun(double){}
//当重载方法之间有一种传参方法可以传入两个方法,则这两个方法都会报错,
//具体是:在执行代码时,Java语言不知道执行的是哪一个代码。不定长参数可能会导致这种情况的发生。
public void fun(String str1,String str2){}
public void fun(String... arg,String str){}
//上述中加入主方法调用fun("wang","han"),上述这两个方法都可以调用,所以在编译的过程中就会报错。
public void fun(int a,String str){}
public void fun(String str,int a){}
//参数的顺序以及个数不一样,方法也可以重载
//返回值不能作为方法重载的决定性因素,因为程序都不知道执行的是哪个方法,进不去方法

1)重写

方法的重写:子类重写父类中的方法,当调用重写过的方法时,调用的是子类中的方法。

class A {
    public void foo() {
        System.out.println("方法!");
    }
    public void print() {
        System.out.println("执行的是父类中的方法!");
    }
}
class B extends A {
    public void print() {
        System.out.println("执行的是子类中的方法");
    }
}

public class Main {

    public static void main(String args[]) {

        B b = new B();
        b.foo();
        b.print();

    }

}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
方法!
执行的是子类中的方法

Process finished with exit code 0

上述代码中,print()方法就发生了方法的重写。在某些述中会出现"方法的覆写",其实覆写就是重写,只是不同的书中写法不同。
而对于父类中有私有方法,子类重写父类中的私有方法。这就上升到另外一个问题:私有的方法或者属性子类能不能被继承?
对此,我们在这里给出结论:子类不能继承父类中的私有属性和方法,但是可以通过继承父类中的方法来调用父类中的私有属性和方法。另外父类方法中的访问控制权限是private,子类重写时发生了访问控制权限扩大public 或 protected,此时这并不是方法的重写。

了解详情,请参考另外一篇博客:私有属性能不能被继承?
https://blog.youkuaiyun.com/wyw15667121424/article/details/103254408

OK!在这里就写完了。如有疑问,请留言私信 me ,本人看到后会及时回复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值