a)概念
1、Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。
2、抽象方法即只有功能声明,没有功能主体实现的方法。
3、抽象类用来描述一种类型应该具备的基本特征与功能,例如:狼和狗共性都是犬科,犬科就是抽象出来的概念。而犬科描述了所有的犬科子类应具备的属性和行为。
4、具体如何去完成这些行为由子类通过方法重写来完成,如:狼和狗都有吼叫的方法,可是吼叫内容方式不同。所以抽象出来的犬科虽然有吼叫功能,但是并不明确吼叫的细节。
b)抽象定义格式
使用abstract修饰抽象类与抽象方法
//abstract在class前修饰类 //abstract在访问权限后,返回值类型前修饰方法,方法没有方法体。 abstract class Person { public abstract void eat(); }
c)抽象类&抽象方法的使用
二、接口抽象类无法直接创建对象,只能被子类继承后,创建子类对象。
1、子类定义时继承抽象类
抽象类是事物的描述,子类需要继承父类完成最终的功能实现细节(即重写方法,完成方法体)。将一个抽象方法重写的过程也叫实现方法的过程。
2、子类定义后创建实例对象
在定义好子类后,可以直接创建对象。在所有使用子类的地方可以传入子类对象,在所有使用父类的地方也可以传入子类对象,因为属性与方法在子父类中都是相同的。
a)概念
1、接口是功能的集合,是比抽象类更为抽象的类,同样是一种数据类型。
2、接口的更为抽象表现为其内的所有方法均为抽象方法。同时不定义普通的成员变量。
3、使用时,接口同样不能创建对象,只能在定义时实现接口。接口只能实现,不能继承。实现的动作类似继承,只是关键字不同,实现使用implements。
4、Java支持继承一个类的同时实现多个接口。
5、像父类一样,所有定义接口的地方,也可以传入其实现类对象(子类对象)。
b)定义格式
使用interface代替了原来的class,其他步骤与定义类相同。
<strong><span style="font-size:18px;">public interface 接口名 { //抽象方法1; //抽象方法2; //抽象方法3; } public interface Careable { public abstract void carCare(); }</span></strong>
c)使用格式
在具体定义类时实现接口,必须重写(实现)所有抽象方法
或者定义抽象类,可以留下若干抽象方法不实现。
class 类 implements 接口1,接口2{}
三、区别如:
class Tesla implements Careable { public void carCare() { System.out.println(“不去汽车保养店,去专业Tesla保养店!”); } }
1、Java支持一个类同时实现多个接口(接口是干爹,抽象类是亲爹,亲爹只能有一个,而干爹可以有很多),类可以在继承一个类的同时,实现多个接口。
2、接口中的成员是固定的:
变量修饰符为:public static final
方法修饰符为:public abstract(所以重写接口方法时,必须使用public)
即接口是更加抽象的抽象类,她的成员方法必须全部为抽象方法。
3、在意义上说,抽象类的方法是指一类相似的对象共有的一些功能,而接口是指额外的一些功能。