特殊关键字

方法中的可变长个数的参数
语法:数据类型… 变量名。-必须作为最后一个参数出现
具体处理过程中实际上是按照数组的方式进行处理,而且数组不会为null

public void pp(int... k1){ if(k1.length>0){ for(int i=0;i<k1.length;i++) System.out.println(k1[i]); } }

void pp(Object… arr)可变长参数可以是Object[] 数组
注意:一个方法的最后一个位置只有一个,所以方法中的可变个数的参数只能有一个
static相关问题:
父类中定义的静态方法(类方法)是否可以通过”子类名.静态方法名”的方式进行调用?
可以,因为继承的特性`

public class Test1 { public static void main(String[] args) { Son.pp(); } }class Fa{ public static void pp(){ System.out.println("Fa.pp()"); } }class Son extends Fa{}

父类中定义的静态方法(类方法)是否可以在子类中进行覆盖定义(重写)?
可以,但是方法签名必须一致,方法必须为static定义

public class Test1 { public static void main(String[] args) {
Son.pp(); } }class Fa{ public static void pp(){ System.out.println("Fa.pp()"); } }class Son extends Fa{ public static void pp(){ System.out.println("Son.pp()"); } }

特殊点:静态方法也允许通过对象进行调用

public class Test1 { public static void main(String[] args) { Fa ff=new Son(); ff.pp(); //注意这里调用的是父类中定义的静态方法,不是子类中覆盖定义的新方法 } }class Fa{ public static void pp(){ System.out.println("Fa.pp()"); } }class Son extends Fa{ public static void pp(){ System.out.println("Son.pp()"); } }

静态块没有覆盖定义的概念,如果父子类中都定义了静态块,一定是先执行父类中的静态块,然后运行子类中的静
态块
加载顺序为先父后子—先执行父类中定义的静态属性和静态块
然后执行初始化操作—先处理父类中的成员属性和非静态块,再执行父类构造器;后执行子类的定义内容

上一篇:Noip 模拟练习4


下一篇:字符串char