关闭

黑马程序员_第五天

63人阅读 评论(0) 收藏 举报

----------------------android培训java  培训、期待与您交流! ----------------------

抽象和接口,这两个含义,好容易弄混淆,不知道什么时候用谁,不过找到个例子

就懂啦,事物相同属性就用抽象,事物个别属性,就用接口,不知道这样理解对不对呢

抽象

抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类。对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract

    在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract

    抽象类中不一定包含抽象方法,但是包含抽象方法的类一定要被声明为抽象类。抽象类本身不具备实际的功能,只能用于派生其子类。抽象类中可以包含构造方法,但是构造方法不能被声明为抽象。

抽象类不能用final来修饰,即一个类不能既是最终类又是抽象类。

abstract不能与privatestaticfinalnative并列修饰同一个方法。

接口

接口中的成员修饰符是固定的。

•成员常量:public static final

•成员函数:public abstract

接口,用于多重继承,也不能实例化。只能包含static final的成员变量,不过在interface中一般不定义成员变量。而成员方法在接口里只能是抽象方法,访问权限只能是public

 

例子:

不同的门都具有本质特征动作open() close()。那么抽象类和接口都可以定义这两个方法。现在要求它具有报警alarm功能。

 1) 如果这3个功能都放在抽象类里面,那么所有的门都具备了这3个功能,无疑不妥,有的门不需要报警功能!

 2) 如果这3个功能都放到接口里面,需要用到报警功能的其他类,就需要实现门的openclose功能,这样子也不对

所以,应该把门的open,closealarm分离,让所有的门都有open, close动作,继承抽象类Door。而需要添加报警功能的门,则再继承接口Alarm

abstract class Door

{

abstract void open(); //打开

abstract voidclose();//关闭

}

interface Alarm {

 void alarm();//报警

}

class AlarmDoor extends Door implementsAlarm //继承门实现报警

{

void open() { … }

void close() { … }

void alarm() { … }

}

抽象类就是类的本质特征,共同的;接口是个性化的,你想让类更具个性化,则继承其他相应个性特征的接口

 

----------------------android培训java  培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6250次
    • 积分:209
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档