java 抽象类和接口

参考https://www.cnblogs.com/dolphin0520/p/3811437.html
回顾一下java的一些基础知识作为记录。
一.抽象类
1.用abstract来修饰的类就是抽象类。
2.无论抽象类中有没有抽象方法,只要用abstract修饰的类就似乎抽象类。用abstract修饰的方法就是抽象方法。
3.抽象类是为了继承而存在的。一个父类的没有任何意义的方法,必须通过子类的不同需求进行不同实现,这个类就可以是抽象类。
4.抽象类不只是包含抽象方法的了,也可以包含普通方法和成员变量。
5.抽象方法和普通方法的区别
(1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
(2)抽象类不能用来创建对象.
(3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
二.接口
1.接口中可以有变量和方法。接口中的变量只能是public static final变量,接口中的方法只能是public abstract方法。并且接口中的方法不能有具体的实现。
2.一个非抽象类继承了接口,就必须实现所有的接口方法。如果是抽象类继承接口,则可以不实现抽象方法。
三.区别
(1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
(2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
(3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
(4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
(5)抽象类可以看作是一个属性的固有行为,接口可以看做是附加行为。
根据文章开头链接整理下来做下笔记。再附上原文https://www.cnblogs.com/dolphin0520/p/3811437.html

你可能感兴趣的:(java 抽象类和接口)