java接⼝和类的实验⼼得_Java抽象类与接⼝学习⼼得
⼀、抽象类
对于抽象类有“三必须”与“五不能”。
三必须(三种情况必须定义为抽象类):
1、⼀个类中直接定义了⼀个或多个抽象⽅法;
2、⼀个类继承了⼀个抽象⽗类,但没有实现⽗类中的抽象⽅法;
3、⼀个类实现了⼀个接⼝,但没有完全实现接⼝包含的抽象⽅法;
五不能:
1、抽象类不能被实例化(即抽象类不能被new);
2、abstract与final永远不能同时使⽤(final修饰的类不能被继承,修饰的⽅法不能被重写;⽽abstract修饰的类只能被继承才有意义,修饰的⽅法必须被重写才有意义);
3、abstract与static不能同时修饰⽅法(static修饰的⽅法属于类本⾝,如果抽象⽅法被static修饰,通过类调⽤该⽅法时会因为没有⽅法体⽽出错);
4、abstract与private不能同时使⽤(abstract修饰的⽅法必须重写才有意义,⽽private使访问权限受限);
5、abstract不能修饰变量(即没有抽象变量);
⼆、接⼝学习java的学习方法
接⼝是彻底化的抽象类。
需要注意的是:
1、⼀个接⼝可以有多个⽗接⼝,但接⼝只能继承接⼝,不能继承类;
2、接⼝⾥的⽅法全是抽象⽅法(public abstract);
3、接⼝⾥定义的字段(Field)只能是是常量(public static final);
三、抽象类与接⼝相似之处
1、抽象类与接⼝不能被实例化,只能被其他类继承或实现;
2、抽象类和接⼝都可以包含抽象⽅法,抽象类的继承类与接⼝的实现类都必须实现⽗类中的抽象⽅法;
四、抽象类与接⼝的主要区别
1、设计⽬的区别:抽象类体现的是⼀种模板式的设计,⽤户可以在这个基础上增加完善功能;⽽接⼝体现的是⼀种规范,⽤户只能且必须完成这个规范;
2、抽象类可以包含普通⽅法,⽽接⼝不可以;
3、Java中⼀个类只能有⼀个直接⽗类,但⼀个类可以实现多个接⼝,接⼝从某种程度上说弥补了Java单继承的不⾜;
4、抽象类可以包含构造器,⽤于抽象类的初始化,⽽接⼝不可以;