一、类
private:只能被自己访问和修改
protected:自身、子类及同一个包中类可以访问
普通类
类中有 成员变量、成员方法、构造方法组成。
抽象类
- 不能实例化
- 必须被继承才能使用,且一个类只能继承一个抽象类
抽象方法
- 只有一个方法名,没有方法体,如
public abstract double computePay();
- 任何一个类包含抽象方法,该类必须是抽象类。
- 任何子类必须重写父类的抽象方法,或者声明为抽象类。
抽象方法————>抽象类;
抽象方法<——/——抽象类;
implements
关键字implements是一个类实现一个接口用的关键字.实现一个接口,必须实现接口中的所有方法。
使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)
还有几点需要注意:
(1)接口可以被多重实现(implements),抽象类只能被单一继承(extends)
(2)接口只有定义,抽象类可以有定义和实现
(3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"(本包可见)
二、接口
使用目的:抽象类所拥有的共性。
特点:
1.接口中只能包含方法。(方法、属性、索引器、事件)
2.接口中的方法不能有任何实现
3.接口中的成员不能有任何访问修饰符(哪怕是public)
4.接口不能被实例化
5.实现接口的类,必须实现接口的所有成员(这里跟抽象类一样)
6.类不能多继承,所以在某些情况下,只能用接口来代替。接口可以多实现(一个类可以继承多个接口,而只能继承一个类)
7.接口的主要目的就是为了实现多态
8.当一个类,同时继承了某个类,并且也实现了某些接口的时候,必须要将继承的类写在第一个(如果一个类同时继承了父类和接口的时候,要把父类写在最前面)
9.当多个类,都具有某个或某几个功能时(方法),但是这几个类型又不属于相同的系列(这几个类型没有共同的父类,就不能用抽象类。),所以这时,为了实现多态就可以考虑把这几个类型共有的方法提取到一个接口中,让这几个类型分别实现该接口
10.当父类实现接口,子类继承父类。那么 接口就可以引用子类
11.不要在一个接口中写过多的方法,避免造成接口污染。可编写多个接口,在每个接口中,分别定义方法
12.实现接口方法的时候,不要有override关键字,直接跟平常定义一样
13.接口方法的显示实现,如果多个接口里有相同的方法名。那么第一个方法名默认的引用的是排在最前面的接口,如果要使用后面接口的方法,就要显示实现:接口名.方法名。访问修饰符是private