重拾Java(二) 函数、方法
2019-02-24 本文已影响0人
h2coder
重拾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();
}