1. 程式人生 > >廖雪峰Java2面向物件程式設計-2資料封裝-1方法過載

廖雪峰Java2面向物件程式設計-2資料封裝-1方法過載

方法過載

方法過載Overload是指:多個方法的方法名相同,但各自的引數不同

  • 引數的個數不同
  • 引數的型別不同
  • 引數位置不同
  • 方法返回值型別通常都是相同的
    目的:相同功能的方法使用同一名字,便於呼叫
    如以indexOf()為例
    public static void main(String[] args) {
        String s = "Test";
        int n1 = s.indexOf('e');//返回字元的索引
        int n2 = s.indexOf("st");//返回字串的索引
        int n3 = s.indexOf('t', 2);//從index=2處開始,返回字元的索引
        int n4 = s.indexOf("st", 3);//從index=3開始,返回字元的索引。無結果返回-1
        System.out.println(n1);
        System.out.println(n2);
        System.out.println(n3);
        System.out.println(n4);
    }

2.使用過載方法改寫Person類的setName()方法

Person.java

public class Person {
    private String name;
    public void setName(String name) {
        this.name = name;
    }
    public void setName(String firstName,String lastName) {
        this.name = firstName+lastName;
    }
    public void setName(String firstName, String middleName,String lastName) {
        this.name = firstName+ middleName +lastName;
    }
    public String getName() {
        return name;
    }
}

Hello.java

public class Hello {
    public static void main(String[] args) {
        Person ming = new Person();
        ming.setName("小明");
        System.out.println(ming.getName());
        Person hong = new Person();
        hong.setName("李","紅");
        System.out.println(hong.getName());
        Person wang = new Person();
        wang.setName("王","寶","強");
        System.out.println(wang.getName());
    }
}

3.總結:

  • 過載方法應該完成相同的功能,參考String的indexOf()
  • 過載方法主要依靠引數型別和數量區分
    * indexOf(String str)
    * indexOf(String str, int fromIndex)
  • 不要去交換引數順序
    * indexOf(String str, int fromIndex)
    * indexOf(int from Index, String str)
  • 過載方法返回值型別應該相同