一,跳出循环
continue和break都是跳出循环。但不同的是continue是跳过此次循环,而break是跳出整个循环所以用终止当前循环来形容更贴切一点。
代码:
for (int i = 0; i < 10; i++) {
if(i%2==0){
continue;
}
System.out.println(i);
}
测试:
如果等于偶数就跳过此次循环,continue后面的代码不会运行。
break演示:
for(int j=0;j<10;j++){
for (int i = 0; i < 10; i++) {
System.out.print(j+" ");
break;
}
}
测试:
每次进入内循环就终止了,所以这里只循环了10次。
二,重载与重写
重载(overload)和重写(override)的区别?重载的方法能否根据返回类型 进行区分?
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态
性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为
重载;重载对返回类型没有特殊的要求。
重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方
法更好访问(访问权限和父类相同或者高于父类),不能比父类被重写方法声明更多的异常。
方法重载的规则:
1.方法名一致,参数列表中参数的顺序,类型,个数不同。
2.重载与方法的返回值无关,存在于父类和子类,同类中。
3.可以抛出不同的异常,可以有不同修饰符。
三,抽象类和接口的异同
抽象类:
(1)抽象类与普通类并未有太大的异同。一个抽象类甚至可以没有抽象方法
(2)有抽象方法的类,必须申明为抽象类。
(3)抽象类中可以有,常量,变量,普通方法,静态方法,访问权限,以及抽象方法。
(4)一个继承至抽象类的类,必须实现所有抽象方法,否则仍然要申明为抽象类。
(5)抽象类也是父类只可以继承一个抽象类
接口:
(1)接口中的只有常量。
(2)接口中的方法都是public访问权限的。
(3)接口中的方法没有方法体,也不能定义静态方法
(4)接口可以实现多个
(5)接口中不能定义构造器
相同:
1.不能够实例化
2.可以将抽象类和接口类型作为引用类型
3.一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要
被声明为抽象类
问: 抽象的 (abstract)方法是否可同时是静态的 (static), 是否可同时是本地方法 (native),是否可同时被 synchronized。
都不能。抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。本地方法是由
本地代码(如 C 代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。synchronized 和方法的实现细节有关,
抽象方法不涉及实现细节,因此也是相互矛盾的。