abstract

用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。

抽象类不能被实例化。主要为了抽离可复用的代码

抽象方法是只有方法声明,而没有方法的实现内容。

抽象类(abstract class )
     1.只要有个方法是abstract ,那么该类是abstract 类;
     2.abstract 方法在子类中必须有实现;在abstract 类中的abstract 方法只有声明而不能有方法体;

如果没有实现那么子类也是抽象类
     3.abstract 方法在子类中被实现时要加上override关键字;
     4.abstract 类方法中非abstract 方法在子类中重写时加上new关键字;

接口( interface)
     1.只有方法声明,实现类来实现方法;
     2.成员变量是static和final的;

接口和抽象类(abstract class and interface) 不同点:
     1.继承一个抽象类,继承多个接口
     2.类里面只要有一个抽象方法,该类就是抽象类;
     3.抽象类可以是抽象方法和普通方法,接口中的方法都是声明(只有方法名,没有内部实现),必须被继承者全部实现

抽象来用来定义一组抽象的概念, 比如: 动物 我们可以想象有 "吃" 这个行为. 你可以定义一个抽象类叫动物 它有一个方法叫 '吃', 但这个吃只是一个抽象的概念,并没有实质的东西,就是没有说明宣究竟如何吃,所在我们应该为动物定义一个抽象的吃的方法(方法内部没有任何代码)?  当我们具体到某一种动物时,我们就可以给出具体的行为, 现在我们要定义一个类 "狗" 狗 extends 动物, 这时你需要为狗的"吃"写个方法 。。。
 

应该说扩展性更强,和更体现面向对象! 
如果还有猫,鸡,鸭,鱼。。。。只要继承了动物类(他们都属于动物) ,那么他肯定都会有“吃”这个方法,只是每个的动物“吃”的实现方式不一样。 

虽然也可以像你说的那样,单独定义狗这个类和“吃”的方法,如果还有猫,鸡,鸭,鱼。。。。要扩展起来会很麻烦,特别随着程序的扩大,你自己的思路都会理不清。  现在这样写,只要是动物(继承了动物)就会有“吃”这个方法

posted on 2014-07-30 18:22  libaby  阅读(152)  评论(0)    收藏  举报