16、java的方法重载和this关键字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18077275/article/details/89761312

1、方法重载

方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。
 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:见示例。
 
2、this的关键字

this是Java的一个关键字,表示某个对象。this可以出现在实例方法和构造方法中,但不可以出现在类方法中。
实例方法可以操作类的成员变量,当实例成员变量在实例方法中出现时,默认的格式是:
this.成员变量;
当static成员变量在实例方法中出现时,默认的格式是:
类名.成员变量;
当一个对象调用方法时,方法中的实例成员变量就是指分配给该对象的实例成员变量,而static变量则和其他对象共享。因此,通常情况下,可以省略实例成员变量名字前面的“this.”,以及static变量前面的“类名.”。
但是,当实例成员变量的名字和局部变量的名字相同时,成员变量前面的“this.”或“类名.”就不可以省略。  
注:this不能出现在类方法中,这是因为,类方法可以通过类名直接调用,这时,可能还没有任何对象诞生。 

3、示例代码

Circle.java
public class Circle {
    double radius, area;

    void setRadius(double r) {
        radius = r;
    }

    double getArea() {
        area = 3.14 * radius * radius;
        return area;
    }

}

Ladder .java
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 .java
public class People {
    double computerArea(Circle c){
        return c.getArea();
    }
    
    double computerArea(Ladder l){
        return l.getArea();
    }
}

Demo18 .java
public class Demo18 {

    public static void main(String[] args) {
//        Circle circle = new Circle();
//        circle.setRadius(12.5);
//        
//        Ladder ladder = new Ladder(10, 20, 15);
//        
//        People people = new People();
//        System.out.println("people计算圆的面积:"+people.computerArea(circle));
//        System.out.println("people计算梯形的面积:"+people.computerArea(ladder));
        
        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/qq_18077275/article/details/89761312