第20节 Java方法重载和this关键字

第20节 Java方法重载和this关键字

方法重载

方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。

class A {
    float add(int a,int b) {
        return a+b;
    }
    float add(long a,int b) {
        return a+b;
    }
    double add(double a,int b) {
        return a+b;
    }
}

PS:见示例

创建主类 Demo18

public class Demo18 {
    public static void main(String[] args) {
        Circle circle = new Circle();            //创建圆对象
        circle.setRadius(12.5);                  //通过setRadius方法的参数传递圆的半径值
        Ladder ladder = new Ladder(10, 20, 15);     //创建梯形对象,并通过构造方法的参数传递值
        People people = new People();        //创建实例,并通过computerArea方法,传递带参数对象,完成参数的传递
        System.out.println("people计算圆的面积:"+people.computerArea(circle));
        System.out.println("people计算梯形的面积:"+people.computerArea(ladder));
    }
}

创建类Circle圆形

public class Circle {
    double radius, area;    // 半径 和面积
    void setRadius(double r) {   //设置半径方法
        radius = r;     //对r进行赋值
    }
    double getArea() {    //得到我们对应的圆的面积
        area = 3.14 * radius * radius;     //计算圆的面积
        return area;
    }
}

创建类Ladder梯形

public class Ladder {
    double top, bottom, height;    //上底,下底,高
    public Ladder(double a, double b, double h) {    //构造方式传参
        top = a;
        bottom = b;
        height = h;
    }
    double getArea() {
        return (top + bottom) * height / 2;   //计算梯形的面积
    }
}

创建类People

public class People {    //重载方法,分别计算圆和梯形的面积
    double computerArea(Circle c){
        return c.getArea();
    }
    double computerArea(Ladder l){
        return l.getArea();
    }
}

运行结果
这里写图片描述

This关键字

this是Java的一个关键字,表示某个对象。this可以出现在实例方法和构造方法中,但不可以出现在类方法中

实例方法可以操作类的成员变量,当实例成员变量在实例方法中出现时,默认的格式是:

this.成员变量;

当static成员变量在实例方法中出现时,默认的格式是:

类名.成员变量;

当一个对象调用方法时,方法中的实例成员变量就是指分配给该对象的实例成员变量,而static变量则和其他对象共享。因此,通常情况下,可以省略实例成员变量名字前面的“this.”,以及static变量前面的“类名.”。

但是,当实例成员变量的名字和局部变量的名字相同时,成员变量前面的“this.”或“类名.”就不可以省略。

注:this不能出现在类方法中,这是因为,类方法可以通过类名直接调用,这时,可能还没有任何对象诞生。

public class Demo18 {
    public static void main(String[] args) {
        Test test = new Test();
        test.speek(3);
    }
}

class Test{
    double a = 4;
    void speek(double a){
        System.out.println("a="+this.a);   //如果重名时优先选择局部变量
    }
}

运行结果
这里写图片描述

猜你喜欢

转载自blog.csdn.net/bravery2288/article/details/82253103
今日推荐