Java易错知识点总结系列:
Java易错知识点总结(一)
Java易错知识点总结(二)
Java易错知识点总结(三)
Java易错知识点总结(四)
目录
抽象方法的关键字abstract不能与private,final,static共存
1.继承
1.Java只支持单继承,不支持多继承
class A extends B{} //true
class A extends B,C{} //false
2.Java支持多层继承
class A{}
class B extends A{}
class C extends B{}
2.接口
先定义一些接口和类:
interface a{}
interface b{}
interface c{}
abstract class AA{}
-
1.接口不可以实现另一个接口
interface d implements a{} (False)
-
2.接口可以继承另一个接口
interface e extends a{} (True)
-
3.接口可以继承多个接口
interface f extends a,b,c{} (True)
-
4.接口不可以继承一个抽象类
interface g extends AA{} (False)
-
5.抽象类可以实现多个接口
abstract class h implements a,b,c{} (True)
-
6.类可以多实现接口
class i implements a,b,c{} (True)
-
7.一个类应该先继承类再实现接口
class k extends AA implements a{} (True)
class j implements a extends AA{} (False)
3.抽象类和抽象方法
易错知识
abstract类中可以有抽象方法,也可以有非抽象方法
一个非抽象类是某个抽象类的子类,那么他必须重写父类的抽象方法
抽象类中可以有构造函数
抽象类是不能实例化的,可以靠非抽象子类来实例化
抽象方法的关键字abstract不能与private,final,static共存
抽象方法必须由子类来实现,不能加private
final修饰的方法不可以被覆盖(重写)
static方法是由类来实现的
4.接口的定义与实现
接口体中包含常量(不允许有变量)(public、final可以省略)
接口体中的方法一定是抽象方法,且访问权限是public(public、abstract可以省略)
抽象方法不含方法体{}
interface Printable{
public final int x=100;
public abstract void add();
}
也可以写成
interface Printable{
int x=100;
void add();
}
易错知识:
如果一个非抽象类实现了某个接口,那么这个类必须重写该接口的所有方法
接口中的方法都是public修饰的(public可以省略),非抽象类重写该接口的所有方法,访问权限必须为public(不能降低访问权限)
如果一个类声明实现一个借口,但没有重写接口中的所有方法,那么这个类必须是abstract类
被重写的方法 | 重写的方法 |
public | public |
protected | public/protected |
友好 | public/protected/友好 |
5.接口回调
接口回调与上转型对象调用子类重写的方法类似
interface Playable{
void play();
}
class Cat implements Playable{
public void play(){
System.out.println("cat");
}
}
public class Test{
public static void main(String[] args){
Playable xx=new Cat(); 声明接口变量,且在接口变量中存放对象的引用
xx.play(); 接口回调
}
}
6.abstract类与接口的比较
abstract类和接口都可以有abstract方法
接口中只可以有常量,不能有变量;而abstract类中既可以有常量也可以有变量
abstract类中可以有非abstract方法,而接口不可以