抽象类
- 定义:如果一个类不与具体的事务相联系,而只是表达一种抽象的概念,仅作为派生类的基类(作为父类,主要是定义功能而已,具体的实现交给派生类。)
- 语法:abstract class 类名 { }
- 规则
- 抽象类可以包含抽象方法也可以有非抽象方法
- 抽象类不能被实例化
- 抽象类只有被继承才有意义
- 普通类当中不能被定义抽象方法
- 有抽象方法的类一定是抽象类
- 抽象方法
- 语法:abstract 方法名(),修饰符只能为public或protected
- 抽象方法没有方法体;
- 子类需要实现父类的全部抽象方法
- a = a + b 与 a += b的区别?
- a += b底层封装实现的就是a = (short) (a + b)
- a = a+b 会报错,a + b自动类型转换为 int,需要强制类型转换
接口
实例:API接口
- Application Program Interface:应用程序接口
USB接口
- 什么是接口?
- 接口是对一组方法的声明。
- 解决Java不支持多单继承的问题
- 接口可以将不同的类或者不同层次的类具有的相同行为集合在一起
- 实现类
- 实现接口的类(implements)
- 实现类主要是实现接口中定义的所有抽象方法
- 继承写在接口实现的前面
- 实现多个接口,接口之间用逗号隔开
- 接口的规则
- 接口中的方法都是抽象方法,方法前面默认省略了public abstract
- 接口中的属性都是常量,默认省略了public static final(和抽象类不同)
- 接口中没有构造器,不能实例化(原因为2)
- 接口中的方法必须全部实现
- 接口也是多态的一种实现方式
- 接口可以继承接口,而且可以继承多个接口
- 抽象类可以继承接口(可以不实现接口中方法)
- 接口的优点
- 降低了类和类之间的耦合度
- 提升了程序的可扩展性
- 接口提供了一种标准(eg:JDBC)
- 接口和抽象类的区别?
- 接口和抽象类的区别?
- 抽象类可以有构造方法,接口中不能有构造方法。
- 抽象类中可以有普通成员变量,接口中没有普通成员变量
- 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
- 抽象类中的抽象方法的访问类型可以是public,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
- 抽象类中可以包含静态方法,接口中不能包含静态方法
- 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
- 一个类可以实现多个接口,但只能继承一个抽象类。