重拾Java(二) 函数、方法

204 阅读2分钟

重拾Java第二篇,函数、方法很常用,复习一下~

  • 函数也可以叫方法,在Java里是一个意思。这里统一叫方法。

  • 方法也有访问修饰符修饰

  • public 公开,所有类都可以调用。
  • protected,保护,子类或实例可以调用。
  • private,私有,只有当前类可以调用(包括内部类)
  • default,啥都不写,默认,包内可见
//一个无形参无返回值的方法
public void test() {
    System.out.println("Hello World...");
}

//一个带形参无返回值的方法
public void test(String msg) {
    System.out.println(msg);
}

//一个无形参有返回值的方法
public String test() {
    return "Hello World...";
}

//一个带形参并且有返回值的方法
public String test(String msg) {
    return "Hello World..." + msg;
}

//可变长参数
public void test(String... msg) {
    for (String str : msg) {
        String result = "Hello World..." + str;
        System.out.println(result);
    }
}
  • 静态方法,无需实例化,类型.方法名()进行调用
  • 一般工具类等方法会使用静态方法
  • 在方法中加入static关键字即可成为静态方法
public static Date getCurrentDate() {
    return new Date();
}
  • 抽象方法,接口中的方法或抽象类中abstract关键字修饰的方法,在子类中强制实现。

  • 例如点击事件,在300毫秒内收到的点击视为无效(为了防抖)

public abstract class DelayOnClickListener implements View.OnClickListener {
    private static final int DELAY_TIME = 300;
    /**
     * 上一次的点击时间
     */
    private long mLastClickTime;

    @Override
    public final void onClick(View view) {
        if (System.currentTimeMillis() - mLastClickTime < DELAY_TIME) {
            return;
        }
        onDelayClick(view);
        this.mLastClickTime = System.currentTimeMillis();
    }

    //抽象方法给外部创建实例时强制重写进行点击事件的处理
    public abstract void onDelayClick(View view);
}
  • final修饰的方法,如果一个方法被final修饰,则不可被子类重写!

  • 例如复写Activity的返回键处理,final后提供support方法给予复写(保证一些复写逻辑被复写但没有调用super而被覆盖)

    /**
     * 不建议复写该方法,请使用 {@link #onBackPressedSupport} 代替
     */
    @Override
    final public void onBackPressed() {
        mDelegate.onBackPressed();
    }

    /**
     * 该方法回调时机为,Activity回退栈内Fragment的数量 小于等于1 时,默认finish Activity
     * 请尽量复写该方法,避免复写onBackPress(),以保证SupportFragment内的onBackPressedSupport()回退事件正常执行
     */
    @Override
    public void onBackPressedSupport() {
        mDelegate.onBackPressedSupport();
    }