抽象类和抽象方法

来源:互联网 发布:淘宝刷佣金单有风险吗 编辑:程序博客网 时间:2024/06/08 08:57
抽象类:


1、抽象类的定义?
当多个类中出现相同功能,但是功能主体不同,这时可以进行向上抽取。只抽取功能定义,而不抽取功能主体。
如果在本类有无法实现的一些功能,那么应该把本类声明成抽象类,
或者父类对于某些方法无法预知子类怎么使用,应该声明成抽象类。
抽象类不一定有抽象方法,但是一个类有抽象方法必然是抽象类

2、抽象类如何使用?
如果子类继承父类,父类中有抽象方法,子类如果没有完全实现父类的抽象方法那么这个子类也会变成抽象类。
抽象类不能实例化(不能new)
遇到抽象类的使用规则是只能找子类实例化,如果没有子类声明一个类去继承它
抽象类允许抽象方法和普通方法并存,原因是:可以给子类提供普通的方法调用

3、抽象类在继承关系中的作用是什么?
父类:抽象方法不用自己实现,对子类有着引导约束的作用
子类:可以调用父类的非抽象方法,子类完成父类所有的抽象方法

抽象类:

用abstract关键字修饰的类,我们称之为抽象类。
public abstract class 类名{

}
抽象方法定义:

public abstract 返回类型 方法名称(参数列表);没有方法体(没有大括号{})


 抽象方法:

用abstract修饰,没有方法体的方法体

   
 public abstract class  Animal{          public abstract void showInfo(String name);//抽象方法,没有方法体          }



注意:

abstract 关键字,和哪些关键字不能共存。
1. final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
2. private: 抽象类中的私有的抽象方法,不被子类所知,就无法被重写。而抽象方法的出现就是需要被重写。
3. static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。可是抽象方法运行没意义。


总结:

抽象类必须使用abstract来修饰。
抽象方法一定在抽象类中。
不能直接使用new关键字来创建抽象类的对象(抽象类不能被实例化)。
抽象类和一般类没有太大的不同,只是比一般类多个了抽象方法。就是在类中可以定义抽象方法。
抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
如果一个类中出现了抽象方法,则该类必须标记为抽象类。
子类继承抽象类时,父类中的抽象方法可以实现也可以不实现,如果抽象方法没有被实现,则子类也必须标记为抽象类。