4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

小结----------------------------------------------------------------------------------------------------

(1)为什么要使用抽象类,抽象类的应用场景?

       答:抽象类就是规定了子类必须拥有哪些特征,但是不关心具体的实现细节

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

(2)抽象类是一个类,包含属性和方法,属性可有可无,属性的性质也没有要求;方法可有可无,方法的性质也没有要求,如果有抽象方法,那么该类一定是抽象类,抽象方法一定要在子类中实现,反言之,抽象类的子类必须为父类中的所有抽象方法提供具体的实现,否则它们也是抽象类。在对抽象类中的抽象方法实现时,所实现的该方法的访问控制级别可以与抽象类中声明的访问控制级别相同,也可以更低。级别:private>protected>public,级别与可见度相反,可见度:public>protected>private 这里通过测试可知,抽象类中的抽象方法不能是private,可以是public和protected,此外,对于子类中对抽象方法的实现,不能降低可见度,即如果抽象类中的抽象方法是public,那么子类对该方法的实现只能是public,然而对于抽象方法是protected,那么子类对该方法的实现可以是protected,也可以是public。

(3)抽象类不能直接实例化,但是可以用抽象类的引用来指向子类的对象,以此来调用在子类中去实现的方法

(4)易错点:

    1)子类中实现抽象方法时不需要加abstract关键字,加是错的,因为此时已经不是抽象方法了,而是有了具体的实现。

    2)abstract关键字不要写成static关键字!!!

    3)abstract只能用来声明类和类的方法(即抽象类和抽象方法),不能用来修饰其他的内容,比如类的属性也不行。

-------------------------------------------------------------------------------------------------------

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

**********抽象类:TelPhone***********

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

**********子类:CellPhone***********

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

**********子类:SmartPhone***********

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

**********测试类:Initial***********

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

(1)抽象类如果定义了抽象方法,那么没有方法体,以;结束

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part1:抽象类】

(2)用父类的引用指向子类的对象,并有该父类引用使用“.”来调用相应子类中所实现的方法。

    比如上述代码中,指向CellPhone子类对象的引用tel1,所调用的call()方法就是在CellPhone子类中所实现的方法

    相应的,指向SmartPhone子类对象的引用tel2,所调用的call()方法就是在SmartPhone子类中所实现的方法