接口和抽象类

接口的优点和缺点

优点:解耦,增加代码的可扩展性。

缺点:子类实现接口,如果接口需要新增新方法,那么所有子类将不能编译通过,而需要重写新增的方法。

接口的访问权限

接口中的方法:只能是public abstract,如果不写public也是public的,不是default的。

接口中的属性:修饰只能是public static final的,哪怕不写权限也是pubic的。需要初始化。

比如:

public interface Test {
    void test();  //这里没有写public和abstract,是省略了。
    int x = 1;  //这里没有写public static final,是省略了。
}

抽象类

1.用abstract修饰的类叫做抽象类,用abstract修饰的方法叫做抽象方法(就是用来重写的)。   

2.抽象类中存在抽象方法和非抽象方法,所以抽象方法的abstract修饰符不可以省略。

3.如果某个类包含抽象方法,那么就必须要定义为抽象类。

4.抽象类就是用来继承的,它不可以被new出来。如果继承了抽象类,那么必须重写抽象类的抽象方法。

5.抽象类中的非抽象方法以及属性的权限和普通类中的权限完全一致,但是对于抽象方法就不一样。抽象方法不允许private,static,synchronized,native修饰。

原因:

a.抽象方法本来就是需要重写的,如果是private权限,则抽象方法没有意义。

b.抽象方法没有具体的实现,如果是static的也就没有意义。

c.抽象的方法如果加上synchronized,那么就只能是对象锁(因为不能用static修饰)。然而抽象类不可以实例化,所以锁只能作用于子类,在这里没有用处。

d.native和abstract分别表示让本地操作系统实现和让子类实现,如果同时出现,那么无法说清楚到底让谁来实现。

原文地址:https://www.cnblogs.com/tp123/p/6383285.html