抽象类和接口的区别
一、抽象类
当父类的一些方法不确定时,可以用abstract关键字来修饰方法,这个方法就是抽象方法,用abstract来修饰该类就是抽象类。
abstract class Animal1 {
private String name;
public Animal1(String name) {
this.name = name;
}
// public void eat() {
// System.out.println("这是一个动物,但是不知道吃什么..");
// }
public abstract void eat() ;
}
二、接口
接口可属于任何类或结构的一组相关行为,规定了实现本接口的类或接口必须拥有的一组规则。
public interface UsbInterface { //接口
public void start();
//规定接口的相关方法,规定的.即规范... public void start();
public void stop();
}
三、相同点和不同点
抽象类 | 接口 | |
---|---|---|
相同点 | 不能被实例化 | 不能被实例化 |
当子类实现方法后才能被实例化 | 当子类实现相应的方法才能被实例化 | |
不同点 | 可以有普通方法 | 没有普通方法 |
成员变量可以是各种类型 | 只能是public static final,必须赋值 | |
只能继承一个抽象类 | 可以实现多个接口 | |
可以包含代码块 | 不可以包含代码块 | |
可以包含构造器 | 不可以包含构造器 |
注:在jdk1.8后,接口也可以通过default修饰,可以添加普通方法