抽象类和接口
抽象方法:是一种只有声明没有具体实现的方法。
抽象类:就是包含抽象方法的类,它存在意义就是为了继承,抽象类自己本身不可以new 对象。当然你也可以定义一个抽象类,但是里面一个抽象方法都没有(闲的蛋疼)。
接口:包含变量和方法,变量会被隐式指定为public static final 方法会被隐式指定为public abstract
如果类实现了一个接口,那就必须要实现这个接口的方法。但是抽象类实现接口,不需要实现这些抽象方法。
他们之间的区别:
抽象类是对事物的一种抽象,可以对整个类进行抽象,不仅仅是行为,也包含属性。
接口是对行为的一种抽象。
比如牛和拖拉机都可以耕田,如果想要他们耕田,从程序设计来看。耕田就可以设计成接口。牛和拖拉机都实现这个接口。
但是牛是畜生。可以设计一个畜生的抽象类。拖拉机是车,可以设计一个拖拉机的抽象类。2个抽象类都可以设计抽象方法,一个是吃草的抽象方法。一个是加油的抽象方法。
// 耕田接口
interface Plow {
// 耕田
void plow();
}
// 车抽象类
abstract class Car {
// 加油
abstract void pourOil();
}
// 拖拉机
public class Tractor extends Car implements Plow {
public void plow() {
System.out.println("tractor plow");
}
public void pourOil() {
System.out.println("tractor pourOil");
}
}
// 牲口
abstract class LiveStock{
// 吃
abstract void eat();
}
// 牛
public class Cattle extends LiveStockimplements Plow {
public void plow() {
System.out.println("Cattle plow");
}
public void eat() {
System.out.println("Cattle eat");
}
}
// 一起愉快的干活
public class gogogo {
public static void main(String[] args){
Tractor tractor = new Tractor();
Cattle cattle = new Cattle();
tractor.pourOil();
tractor.plow();
cattle.eat();
cattle.plow();
}
}