三、面向对象——14-抽象类

14-抽象类

1.抽象方法和抽象类

(1)抽象方法和抽象类必须用abstract修饰符来定义,有抽象方法的类只能被定义为抽象类,抽象类里可以没有抽象方法;

(2)抽象方法和抽象类的定义规则:

  1)抽象类和抽象方法必须使用abstract定义,抽象方法不能有方法体;

  2)不论这个抽象类中是否有抽象方法,这个抽象类都不能被实例化,即不能被创建实例;

  3)抽象类可以包含五中成分:成员变量、方法、构造器、初始化块、内部类(接口、枚举类),抽象类中的构造器不能被用于创建实例,只能用于子类调用;

  4)只要含有抽象方法的类一定是抽象类;

(3)注意final关键字永远不能和abstract关键字同时使用;

(4)抽象类例子:

  People抽象类,是Student和Teacher类的父类:

People:

public abstract class People {
    //构造方法
    public People(){
    }
    //抽象方法
    public abstract void action();
}

 

 

 

Student:

public class Student extends People{

    public Student() {

    }
    //实现抽象父类方法
    public void action() {
        System.out.println("学生学习");
    }

}

 

 

 

Teacher:

public class Teacher extends People{

    public Teacher() {

    }

    @Override
    public void action() {
        // TODO Auto-generated method stub
        System.out.println("教师授课");
    }
    
}

 

 

 

Test:

public class Test {
    public static void main(String[] args) {
        People s = new Student();
        People t = new Teacher();
        s.action();
        t.action();
    }
}

 

 

 

2.抽象类的作用

(1)抽象类体现的是一种模板模式的的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式;

(2)使用模板模式的简单规则:

  1)抽象父类可以只定义某些需要使用的方法,把不能实现的部分抽象成抽象方法留给子类实现;

  2)父类中可能包含需要调用其他系列方法的方法,这些被调用方法可以由弗雷实现,也可以由其子类实现,父类中提供的方法只是定义了一个通用算法,其实现也许并不完全由自身实现,而必须依赖于其子类的辅助。

posted @ 2017-08-02 19:31  丶theDawn  阅读(143)  评论(0编辑  收藏  举报