黑马程序员技术交流社区

标题: 抽象类 [打印本页]

作者: songwenhao    时间: 2016-4-26 22:17
标题: 抽象类
在自上而下的继承层次结构中,位于上层的类更具有通用性,甚至可能更加抽象。从某种角度看,祖先类更加通用,它只包含一些最基本的成员,人们只将它作为派生其他类的基类,而不会用来创建对象。甚至,你可以只给出方法的定义而不实现,由子类根据具体需求来具体实现。

这种只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。包含一个或多个抽象方法的类也必须被声明为抽象类

使用 abstract 修饰符来表示抽象方法和抽象类。

抽象类除了包含抽象方法外,还可以包含具体的变量和具体的方法。类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化。

抽象类不能被实例化,抽象方法必须在子类中被实现。请看下面的代码:import static java.lang.System.*;public final class Demo{    public static void main(String[] args) {        Teacher t = new Teacher();        t.setName("王明");        t.work();               Driver d = new Driver();        d.setName("小陈");        d.work();    }}// 定义一个抽象类abstract class People{    private String name;  // 实例变量       // 共有的 setter 和 getter 方法    public void setName(String name){        this.name = name;    }    public String getName(){        return this.name;    }       // 抽象方法    public abstract void work();}class Teacher extends People{    // 必须实现该方法    public void work(){        out.println("我的名字叫" + this.getName() + ",我正在讲课,请大家不要东张西望...");    }}class Driver extends People{    // 必须实现该方法    public void work(){        out.println("我的名字叫" + this.getName() + ",我正在开车,不能接听电话...");    }}运行结果:
我的名字叫王明,我正在讲课,请大家不要东张西望...
我的名字叫小陈,我正在开车,不能接听电话...

关于抽象类的几点说明:

在下列情况下,一个类将成为抽象类:

作者: 东方乔恩    时间: 2016-4-26 22:19
给力,顶
作者: Sunshine_boy..    时间: 2016-4-26 23:37
#在这里快速回复#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
作者: 格城先生    时间: 2016-4-26 23:50
学抽象类的时候好晕,难怪叫抽象类!
作者: feijiaqi    时间: 2016-4-26 23:56
顶上去,现在刚学这个有点迷糊呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2