2022-7-18 学习日记(9th day)方法的重载和重写

目录

方法的重载

方法的重载(Overload):

重载的好处

不定长参数:

访问权限

构造器(构造方法)

方法的重写

示例:动物会叫,叫声各不相同

思维导图:


方法的重载

方法的重载(Overload):

方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。方法的重载即:同名不同参

要求:
            方法名相同
            参数不同{
                1.参数类型不同
                2.参数个数
                3.参数的顺序
            }
            与返回值类型无关,与访问权限修饰符无关,与方法体无关
            发生在同一个类里

重载的好处

不用为了对不同的参数类型或参数个数,而写多个函数,系统可以自动匹配;

多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。 

展示:

    public int max(int num1, int num2){
        int max=num1>num2?num1:num2;//求两个数的最大值
        return max;
    }
    public int max(int num1,int num2,int num3){
        int max1=num1>num2?num1:num2;//求三个数的最大值
        int max=max1>num3?max1:num3;
        return max;
    }

 主方法运行:

    public static void main(String[] args) {
        test03 x=new test03();
        System.out.println(x.max(1,3));
        System.out.println(x.max(1,3,5));
}

运行结果:

3----自动调用两个参数的方法

5----自动调用三个参数的方法

这个时候就有一个问题了 

能不能用一个方法,计算多个数字相加:        

        答案呼之欲出了:利用数组

利用数组计算多个数相加: 

    public void sum(int []arr){
        int result=0;
        if(arr.length<2){
            result=arr[0];
        }else{
            for (int i : arr) {
                result+=i;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        test03 x=new test03();
        int []arr=new int[]{1,5,6};
        System.out.println(x.sum(arr));
    }

 但这么写,主方法里,肯定是要添加一个数组,这样也麻烦,有没有可以直接在调用函数时,就把值写入里面的方法呢。答案是有啦:

简便算法:不定长参数(本质是数组)定制的时候不用填数组了,但在方法里按照数组使用。
参数列表中,至多有一个不定长参数
不定长参数必须在最后位置

不定长参数:

        public int sum(int...arr){
            int result=0;
            if(arr.length<2){
                result=arr[0];
            }else{
                for (int i : arr) {
                    result+=i;
                }
            }
            return result;
        }
        public static void main(String[] args) {
            test03 x=new test03();
            System.out.println(x.sum(1,5,6));
        }

访问权限

public:一个工程下任意位置都可以访问 

         类,属性上,方法,构造器 

protected:可以跨包,如果跨包,必须是他的子类

         属性,方法,构造器

(默认的):当前包下可以访问

         类,属性,方法,构造器 

private:只有当前类可以访问

         属性,方法,构造器

构造器(构造方法)

语法:访问权限修饰符 类名(参数列表){ }

public a(){}

特点:

  1. Java在new对象的时候,先看对象所对应的类有没有构造器,有的话有什么样的构造器;如果没有构造器,则无法构建对象(创建对象)
  2. 每个类会有一个默认的无参的构造器
  3. 在对象被实例化时调用了构造器
  4. 我们创建对象实际上是通过构造器创建的
  5. 如果一个类中显示的声明了一个构造器,原来默认自带的无参构造器就没用了。如果方法有多个构造器,方法必须重载。

方法的重写

 方法重写基于继承,子类继承父类,子类可以调用父类的方法,同时子类也可以重写父类中的方法,来实现和父类中不同的业务处理逻辑。重写要求子类中方法与父类中的方法名称仙童,参数相同,参数类型相同。当子类调用该方法时,基类中的方法则被覆盖。方法重写即:重写父类方法,同名也同参

示例:动物会叫,叫声各不相同

动物类

public class Animal {
	public void speek(){
		System.out.println("动物都会叫");
	}
}

狗类,继承自动物类

class Dog extends Animal {
	/*
	  重写父类的speek方法
	 */
	@Override
	public void speek() {
		System.out.println("汪汪汪");
	}
}

猫类,继承自动物类

class Cat extends Animal {
	/*
	  重写父类的speek方法
	 */
	@Override
	public void speek() {
		System.out.println("喵喵喵");
	}
}

思维导图:

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值