java方法重载与重写

在学习java类的继承的时候,出现了方法的重载以及方法的重写;为了避免混乱。所以整理了一下;

方法重载

方法重载:在一个类中或者在继承类中都可以

package HomeWork;

/*
重载
 */
public class Test9 {
    public double show(double i){
        System.out.println("返回值类型不一样");
        return i;
    }
    public void show(int i) {
        System.out.println("i=" + i);
    }

    public void show(int i, int j) {
        System.out.println("两个int");
    }

    public void show(int i, double j) {
        System.out.println("一个int,一个double");
    }

    public void show(double j, int i) {
        System.out.println("一个double,一个int");
    }
    public void show(double j,int ...i){
        System.out.println("可变参数");
    }

    public static void main(String[] args) {
        Test9 t=new Test9();
        System.out.println("------(一个int)--------");
        t.show(2);
        System.out.println("-------(一个double)------");
        t.show(2.0);
        System.out.println("--------(两个int)----------");
        t.show(2,2);
        System.out.println("--------(一个double,一个int)----------");
        t.show(2.0,2);
        System.out.println("------(一个int,一个double)------------");
        t.show(2,2.0);
        System.out.println("------(一个double,一个可变数组)-----------");
        t.show(2.0,2,2,2);
    }
}

结果:

------(一个int--------
i=2
-------(一个double------
返回值类型不一样
--------(两个int----------
两个int
--------(一个double,一个int----------
一个double,一个int
------(一个int,一个double------------
一个int,一个double
------(一个double,一个可变数组)-----------
可变参数

由此可见,在一个类中,重载的条件可以是:
1.参数类型不同
2.参数个数不同
3.参数类型,个数相同,排列顺序不同

注:重载返回值类型可以不同,参考上述代码便得知

下面再来看看能不能在继承类中实现重载:

class person extends  Test9{
    public void show(double i,double j){
        System.out.println("两个double");
    }

    public static void main(String[] args) {
       person person=new person();
       person.show(2.0,2.0);
       person.show(2,2);

    }
}

结果如下:

两个double
两个int

可见,在继承类中也可以实现方法重载

方法重写

方法重写:指在继承类中,子类重写父类的方法,
代码如下:

package Test_06;

public class Animal1 {
    public void say(){
        System.out.println("我是动物");
    }
}
class Cat extends  Animal1{
    @Override
    public void say() {
        System.out.println("我是cat");
    }
}
class test8{
    public static void main(String[] args) {
        Animal1 animal1=new Cat();
        animal1.say();
    }
}

结果如下:

我是cat

另外一种情况:

public class Animal1 {
    void say(){
        System.out.println("我是动物");
    }
}
class Cat extends  Animal1{
    @Override
    public void say() {
        System.out.println("我是cat");
    }
}

由上可知,方法重写要求:
1.方法名字必须相同
2.子类方法修饰符权限必须大于父类方法修饰符

很多小伙伴是不是以后这样就完了
还有一种情况

public class Animal1 {
    Object say(){
        System.out.println("我是动物");
        return  new Object();
    }
}
class Cat extends  Animal1{
    @Override
    public Cat say() {
        System.out.println("我是cat");
        return new Cat();
    }
}

重写的方法返回值可以不同
但是要求是:子类的返回值必须时父类方法返回值的子类;
最后一项大家可能不太接触,但也是有的哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值