【JAVA学习之路 | 基础篇】面相对象基础(方法篇)

1.方法的重载(overload)

(1).概念 : 在同一个类中,允许存在一个以上的同名方法,只要他们的参数列表不同即可.

(2).重载的特点 : 与修饰符,返回值类型无关,只看参数列表,且参数列表必须不同(可以是参数个数不同或参数类型不同).调用时,根据方法参数列表不同来区别.

(3).重载方法调用 : JVM通过方法的参数列表,调用匹配的方法.

  • 先找个数,类型最匹配的.
  • 再找个数和类型可以兼容的,如果多个方法同时兼容将
    public class Text01 {
        public static void main(String[] args) {
            OverLoad p1 = new OverLoad();
            int a1 = p1.m0L(3);
            System.out.println("方法1的结果是" + a1);
            int a2 = p1.m0L(2, 4);
            System.out.println("方法2的结果是" + a2);
            p1.m0L("输出方法三");
        }
    }
    class OverLoad {
        public int m0L(int a) {
            return a * a;
        }
        //该处编译错报错,方法名相同,参数列表相同,由于与返回值类型无关,不是重载
        //public void m0L(int a) {
            //;
        //}
        public int m0L(int a, int b) {
            return a * b;
        }
        public void m0L(String a) {
            System.out.println(a);
        }
    }

2.可变个数形参的方法

(1)使用场景 : 在调用方法时,可能会出现方法形参的类型是确定的,但参数的个数不确定.此时我们可以使用可变个数形参的方法.

(2)格式 : (参数类型 ...参数名)

(3)说明注释 : 

  1. 可变个数形参的方法在调用时,传进去的实参个数可以是0个,1个或多个.
  2. 可变个数形参的方法与在同一个类中,同名的方法构成重载.
  3. 特例 : 可变个数形参的方法在同一个类中方法名相同,且与可变个数形参的类型相同的数组参数不构成重载.(int... a被当做int[] a处理,遍历时可以使用a.length属性)

  4. 形参列表最后可变个数的形参必须声明在形参列表最后.
  5. 可变个数的形参最多在一个方法的形参列表中出现一次.
    public class Text03 {
        public static void main(String[] args) {
            TexT p1 = new TexT();
            //可变参数的方法,括号内可以为0个
    //        p1.text();
    //        p1.text(1, 2);
            p1.text(1, 2, 3, 4, 6);
        }
    }
    class TexT {
        public void text(int... a) {
            System.out.println("111");
            //对传入的实参进行遍历
            for (int i = 0; i < a.length; i++) {
                System.out.println(a[i]);
            }
        }
        //参数列表不同,可以构成重载
        public void text(double b) {
            System.out.println("222");
        }
        //编译器报错,不能构成重载
    //    public void text(int[] a) {
    //        System.out.println("333");
    //    }
        //该是允许的,可变个数形参在后
    //    public void text(int i, int... a) {
    //        System.out.println("444");
    //    }
        //编译器报错
    //    public void text(int...a, int i) {
    //        System.out.println("444");
    //    }
        //编译器报错
    //    public void text(int... a, double... b) {
    //        System.out.println("555");
    //    }
    }
    
    
    111
    1
    2
    3
    4
    6

3.方法的值传递机制

(1).形参和实参

  • 形参 : 在定义方法时,方法名括号内声明的变量称为形式参数,简称形参.
  • 实参 : 在调用方法时,方法名括号中使用的值/变量/表达式称为实际参数,简称实参.

(2).参数传递机制 : 值传递

  1. java里参数的传递方式只有一种:值传递.则将实际参数的副本传入方法内,而参数本身不受影响.
  2. 形参如果是基本数据类型,将实参基本数据类型变量的"数据值"传递给形参.
  3. 形参如果是引用数据类型,将实参基本数据类型变量的"地址值"传递给形参.

(3).举例   该处swap方法是个交换方法

  • int a =10,int b =10,swap(x,y),实现:x=a,y =b,当调用swap时产生一个栈桢,存储的是数据10(x)和数据10(y).
  • 该处Employee是一个员工类,Employee a,Employee b,swap(x,y).实现Employee x =a,Employee b =y.由于是值传递,(否定了引用传递).x其实是a的一个副本,y是b的一个副本,调用swap时产生一个栈桢,存储的是指向a,b对象的地址值.调用方法后,二者引用并没有发生改变.最终导致x指向了对象b,y指向了对象a.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值