*接口和抽象类的概念?
接口(interface),是抽象方法的集合,一个类通过实现接口来实现接口中的抽象方法。
切记:接口不是类,接口无法被实例化!类描述对象的属性和方法,接口则包含类需要实现的方法,除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。在Java中,接口类型可以用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
抽象类,在面向对象的概念中,所有的对象都是通过类来描述的,但反过来,并不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描述一个具体的对象,这样的类就是抽象类。
抽象类除了不能被实例化之外,类的其他功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。一般在设计阶段就要决定要不要设计抽象类,因为抽象类被继承了才能得到利用。
*接口和抽象类的定义?
接口的定义:
上面图一中方法不需要添加public abstract修饰符,默认的只能是public abstract修饰,所以定义方法要想图二那样。接口中尽量不要定义变量,如果必须定义变量的话记住变量的名字一定要大写,如图三。下面总结下:
①使用interface修饰 ②接口中的所有方法都是公开的,并且是抽象方法 ③接口中可以定义成员变量,但都是公共静态常量
④接口中不能存在实现方法 ⑤实现了接口就必须实现接口中的全部方法 ⑥接口不是一个类,不能被实例化
抽象类的定义:
public abstract class AbstractAnimal {
String name;
int age;
public abstract void show();
public void doIt() {
System.out.println("执行!");
}
}
一般抽象类的命名以Abstract开头,便于辨别是一个抽象类,抽象类中可以有实现的方法的,另外在抽象类中也可以定义成员变量,抽象类说到底还是一个类,和接口是有区别的对于抽象类总结以下特点:
①使用abstract修饰作为抽象类和抽象方法 ②子类必须实现抽象类中的抽象方法
③抽象类中的方法不能是私有的,否则子类无法实现 ④抽象类中允许有实现的方法
*抽象类和接口的区别?
1.抽象类需要一个类去继承,接口则是需要去实现。两者都要全部实现其中的抽象方法;
2.接口中不能有已经实现的方法,而抽象类则可以;
3.接口可以多实现,但是抽象类只能单继承(所以接口的灵活性和可扩展性更好,用的更多);
4.抽象类里面可以没有抽象方法,包含抽象方法的类一定是抽象类
总结:接口更像是定义一种功能或者操作,实现了这个接口就可以干某些事,而抽象类更像是对一些事物的高级概括。