抽象类总结
在多态章节已经介绍了抽象类和抽象方法,抽象类和抽象方法定义如下代码所示
public abstract class Pet {
public abstract void toHospital() ;
}
抽象类对比普通类
①抽象类不能实例化,但可以通过创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例
②普通类可以被实例化
抽象方法对比普通方法
①抽象方法没有方法体
②普通方法有方法体
抽象类和抽象方法的使用
①抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类
②如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类
③没有抽象构造方法,也没有抽象静态方法
④抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用
接口
为什么使用接口
以门为例,门可以开和关,锁有上锁和开锁的功能,那么如果我们需要定义防盗门类,可以将门的共有属性和方法写在父类Door中。对于锁的定义,一种方法是作为父类的方法让子类继承,但是有些高级的门是指纹锁,有些是用钥匙打开的,甚至一些推拉门没有锁,故写在父类中,并不好处理,这是就可以用接口来处=处理,下面也会以此为例,实现该功能。
什么是接口
接口的定义如下:
public interface MyInterface {
public static final 变量类型 变量名 = 初值;
public abstract void 方法名();
//其他方法
}
示例
// 利用接口实现防盗门
// 父类Door类
public abstract class Door {
public abstract void open();
public abstract void close();
}
// 锁接口
public interface Lock {
void lockOpen();
void lockClose();
}
// 拍照接口
public interface Photo {
void photo();
}
// 子类FangDaoDoor,继承Door类,实现Lock、Photo接口
public class FangDaoDoor extends Door implements Lock,Photo{
public void open() {
System.out.println("开门");
}
public void close() {
System.out.println("关门");
}
public void lockOpen() {
System.out.println("插进钥匙,向左旋转钥匙三圈,锁上了,拔出钥匙");
}
public void lockClose() {
System.out.println("插进钥匙,向右旋转钥匙三圈,锁打开了,拨出钥匙");
}
public void photo() {
System.out.println("铃....咔嚓....照片已存储");
}
}
// 主人类
public class Master {
String name;
FangDaoDoor fangDaoDoor = new FangDaoDoor();
public void getIn(){
fangDaoDoor.close();
fangDaoDoor.photo();
System.out.println("掏出钥匙");
fangDaoDoor.lockClose();
}
public void getOut(){
System.out.println("掏出钥匙");
fangDaoDoor.lockOpen();
fangDaoDoor.photo();
fangDaoDoor.open();
}
}
// 测试类
public class Test {
public static void main(String[] args) {
FangDaoDoor door = new FangDaoDoor();
Master master = new Master();
master.getOut();
master.getIn();
}
}
接口的使用规范
①接口不可以被实例化
②接口的方法都为抽象方法,默认以public abstract修饰
②实现类必须实现接口的所有方法,除非这个类也是抽象类
④实现类可以实现多个接口,用implements关键字,多个接口使用逗号隔开
⑤接口中的变量都是静态变量,默认public static final修饰
抽象类与接口对比
相同点:
①都代表系统的抽象层
②都不能被实例化
③都包含抽象方法
不同点:
①在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法
②一个类只能继承一个直接的父类,但可以实现多个接口
③抽象类便于复用,接口便于代码维护
使用原则:
①接口做系统与外界交互的窗口:接口提供服务
②接口本事一旦制定,就不允许随意修改
③抽象类可完成部分功能实现,还有部分功能可作为系统的扩展点
面向对象设计原则
①多用组合,少用继承
②针对接口编程
③针对扩展开放,针对改变关闭
137

被折叠的 条评论
为什么被折叠?



