Java面向对象之方法详解

疯狂JAVA5.2方法详解

方法的所属和参数传递机制 

package com.crazyJava.chacpter03.faceObject;

/**
 * @ClassName: ParameterPassingTest
 * @Description:5.2.2 方法的参数传递机制
 * @Author: 01412126
 * @Date: 2022/1/24 17:33
 */
/*
* 5.2.1 方法的所属
* 1、Java里面的方法要么属于类要么属于对象,有static修饰的方法属于类本身,没有static修饰的方法属于对象
* 2、之所以用不同对象调用有static修饰的方法结果都一样,其实本质上还是对象所属的类来调用的
* 3、一个类里面的方法相互调用的时候没有写对象或类,其实是隐藏了this关键字,背后还是有对象或类来调用方法的
*
* 5.2.2 Java的参数传递机制都是值传递,不管是基本数据类型还是引用数据类型
* 值传递的意思就是,传过去的是实际参数的一个副本,不管方法中对这个复制品如何操作,对实际参数本身都不会有影响
*
* */
class Swap{
    public int a;
    public int b;

    public void swap(Swap swap){
        int temp = swap.a;
        swap.a = swap.b;
        swap.b = temp;
        System.out.println("swap()后的a  =  " + swap.a + " swap()后的b  =  " + swap.b);
    }
}

public class ParameterPassingTest {
    public static void swap(int a,int b){
        int temp = a;
        a = b;
        b = temp;
        System.out.println("swap()后的a  =  " + a + " swap()后的b  =  " + b);
    }

    public static void main(String[] args) {
//        int a = 9;
//        int b = 7;
//        swap(a,b);
//        System.out.println("a  =  " + a + " b  =  " + b);
        Swap swap = new Swap();
        swap.a = 10;
        swap.b = 9;
        //对于这里,传过去的是swap变量的值,与main函数里面的swap变量不是同一个
        swap.swap(swap);
        System.out.println("a  =  " + swap.a + " b  =  " + swap.b);




    }
}

方法的重载

package com.crazyJava.chacpter03.Methods;

import org.junit.Test;

/**
 * @ClassName: OverLoadTest
 * @Description:方法的重载
 * @Author: 01412126
 * @Date: 2022/1/25 8:36
 */
/*
* 确定一个方法的三要素:
* (1)方法的所属者,类或对象
* (2)方法名
* (3)形参列表
*
* 方法的重载:两同一不同
* 方法的所属者和方法名相同,形参列表不同。其他的如修饰符和返回值类型则与方法重载没有关系
*
* 拿方法的形参作为区分方法的特点比较模糊,int foo()和foo()方法如果直接使用foo()这样的写法无法区分是调用有int返回还是无int返回的
* 方法,所以不能拿方法的返回值作为方法重载的区分要点,同理修饰也是如此。
*
*
* */
public class OverLoadTest {
    public void eat(){
        System.out.println("hhaa");
    }

    public void eat(String s){
        System.out.println("eat  " + s);
    }

    public void eat(String ... s){
        //不太推荐这样写
    }

    @Test
    public void test(){
        eat();
        eat("noddle");
    }

    public static void main(String[] args) {
        OverLoadTest overLoadTest = new OverLoadTest();
        overLoadTest.eat();
    }


}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值