抽象类 Abstract Class
一、抽象类
抽象类由abstract关键字来修饰,当一个类不能描述出具体对象的实现,只能描述它的一些表象,具体的实现由导出类(子类)来描述时,可以使用抽象类。抽象类体现了数据抽象的思想,是实现多态的一种机制。它定义了一组抽象的方法,至于这组抽象方法的具体表现形式由派生类来实现。
抽象类的特点:
1、抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。
2、抽象方法必须由子类来进行重写。
3、只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法。
4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。
5、子类中的抽象方法不能与父类的抽象方法同名。
6、abstract不能与final并列修饰同一个类。
7、abstract 不能与private、static、final或native并列修饰同一个方法。
二、接口 Interface
接口由Interface修饰,如果说abstract是部分抽象的,那么接口就是完全抽象的
接口的特点
1、个Interface的方所有法访问权限自动被声明为public。确切的说只能为public
2、接口中可以定义“成员变量”,或者说是不可变的常量,因为接口中的“成员变量”会自动变为为public static final。可以通过类命名直接访问:ImplementClass.name。
3、接口中不存在实现的方法。
4、实现接口的非抽象类必须要实现该接口的所有方法。抽象类可以不用实现。
5、不能使用new操作符实例化一个接口,但可以声明一个接口变量,该变量必须引用(refer to)一个实现该接口的类的对象。可以使用 instanceof 检查一个对象是否实现了某个特定的接口。例如:if(anObject instanceof Comparable){}。
6、在实现多接口的时候一定要避免方法名的重复。
7、Java通过实现多个接口来实现多重继承、
8、不可以在interface中创建private的接口
接口的嵌套
1.类中一个私有的接口不能被除了该类内的内部类以外的类实现
class A{
private interface Test{}
private class B implements Test{
}
public void getTest(Test t){
return new B();
}
}
class B {
//class C implement A.Test {} 是不可以的
}