5.Java面向对象 抽象类和接口
文章目录
- 5.Java面向对象 抽象类和接口
- 一、
- 1.抽象类VS普通类
- 2.抽象方法VS普通方法
- 3.抽象类与抽象方法的使用
- 二、接口
- 1.必须知道的接口特性
- 2.定义接口
- 3.接口使用
- 三、抽象类vs接口
- 相同点
- 不同点
- 多用组合,少用继承针对接口编程针对扩展开放,针对改变关闭
- 多用组合,少用继承针对接口编程针对扩展开放,针对改变关闭
一、
1.抽象类VS普通类
抽象类不能被实例化
但可以创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例
普通类可以被实例化
2.抽象方法VS普通方法
有无方法体
3.抽象类与抽象方法的使用
抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类
如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类
没有抽象构造方法,也没有抽象静态方法抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用
二、接口
接口是一种约定
接口是一种能力
1.必须知道的接口特性
接口不可以被实例化
实现类必须实现接口的所有方法
实现类可以实现多个接口
implements、多个接口使用逗号隔开
接口中的变量都是静态常量(public static final)
2.定义接口
使用interface
关键字
/**
*锁接口
*/
public interface Lock{public abstract void lockUp();//上锁public abstract void openLock;//开锁
}
3.接口使用
使用implements
关键字,多个接口使用逗号隔开
/**
*防盗门
*/
public class FdDoor extends Door implements Lock,DoorBell(){public void open(){System.out.println("uegfuegv");}
}
三、抽象类vs接口
相同点
代表系统的抽象层
都不能被实例化
都能包含抽象方法
用于描述系统提供的服务,不必提供具体实现
不同点
在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法
抽象类便于复用,接口便于代码维护
一个类只能继承一个直接的父类,但可以实现多个接口
多用组合,少用继承针对接口编程针对扩展开放,针对改变关闭
,而接口中只能包含抽象方法
抽象类便于复用,接口便于代码维护
一个类只能继承一个直接的父类,但可以实现多个接口