抽象类 & 接口
1 概述
用关键词 abstract 修饰的方法为抽象方法,修饰的类为抽象类。
特点
- 抽象类,不能使用 new 关键词来创建对象。--->抽象类是用来让子类继承的
- 抽象方法,只有方法的声明,没有方法的实现。--->交给子类实现
PS:
- 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类
- 子类继承抽象类,就必须要实现抽象类中没有实现的抽象方法,否则该子类也要声明为抽象类。
2 实例
抽象类 Action
package com.oop;
//abstract 抽象类 ,类只能单继承 (接口可以多继承)
public abstract class Action {
//约束,由继承这个类的类 进行实现
//abstract,抽象方法,只有方法名,没有方法实现
public abstract void doSomething();
//1.不能 new 这个抽象类,只能靠子类去实现它
//2.抽象类中可以写普通方法
//3.抽象方法必须在抽象类中
}
继承了抽象类的类 A
package com.oop;
//继承了抽象类,必须实现其为实现的方法、 除非本类也声明为抽象类
public class A extends Action {
@Override
public void doSomething() {
}
}
3 接口
普通类:只有具体实现
抽象类:具体实现和规范(抽象方法)都有!
接口:只有规范!自己无法写方法~专业的约束! 约束和实现分离:面向接口编程
PS:面向对象的精髓,就是对 对象的抽象,最能体现这一点的就是接口。设计模式,实际上就是如何合理的去抽象。
实例
package com.oop;
//接口都需要有实现类
public interface UserService {
//接口中的所有定义其实都是抽象的 public abstract
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
package com.oop;
public interface TimeService {
void timer();
}

PS:接口中定义的属性都是常量(一般不会在接口中定义属性)
4 总结
- 接口是一个约束,可以定义一些方法,让别人实现。
- 接口中的方法都是 抽象方法
- 接口中的属性都是常量
- 接口不能被实例化,接口中没有构造方法
- implements 可以实现多个接口
- 子类必须要重写接口中的方法

浙公网安备 33010602011771号