目录
思维导图:
抽象类:
- 一个类如果被abstract修饰称为抽象类,抽象类中被abstract修饰的方法称为抽象方法,抽象方法不能写出具体的实现,例如:
abstract class move{ public abstract void run();//抽象方法 public abstract void eat();//抽象方法 }
- 抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类。抽象类也是类,内部也可以有构造方法、成员方法和成员变量。
- 包含抽象方法的类一定要设计为抽象类,用abstract来修饰这个类。
- 抽象类不能进行实例化,这也是和普通类的重要区别之一。既然抽象类不能实例化,那抽象类的存在就是为了被继承。
- 如果一个普通类继承了一个抽象类,那么一定要重写这个抽象类中的抽象方法,如果不重写那么子类也成了抽象类,就必须使用abstract修饰。
- 如果一个抽象类a继承了另外一个抽象类b,那么抽象类a可以不重写抽象类b中的抽象方法。但是若再有一个普通类继承了抽象类a,那么这个普通类不仅要重写抽象类a中的抽象方法还要重写抽象类b中的抽象方法。
- 抽象方法不能被private、final和static修饰,因为抽象方法要被重写!抽象方法没有加访问修饰限定符时默认为public。
- 抽象类的存在相当于多了一重编译器的检验,一般是实例化子类来完成实际工作,如果不小心实例化了父类则编译器就会报错提醒你。
接口:
- 接口就是多个类的公共规范,接口是一种引用类型。接口中的成员变量默认都是public static final修饰的;接口中的成员方法默认都是抽象方法,用public abstract修饰。
- 接口的定义使用关键字interface并且在创建接口时,接口的命名一般用大写字母I开头。
- 接口当中的成员方法是不能有具体实现的,只能由具体实现接口的类实现。如果要有具体实现需要加上访问修饰限定符default。
- 接口当中可以有静态的成员方法,不论是静态的方法还是default方法,默认都是由public修饰的。
- 接口是不可以实例化的,如果要使用接口就必须用一个类来实现,并且重写接口中所有的抽象方法。当子类重写接口中的方法时不能用default访问修饰限定符。
- 接口不能有静态代码块、实例代码块和构造方法。
- 一个类实现多个接口时一定要把每个接口的抽象方法都实现,否则这个类要加上abstract。
- 在java中虽然不支持多继承,但是支