Java-简单介绍抽象类

一、抽象类的介绍

1、什么是抽象类和抽象方法

抽象类是被关键字abstract修饰的类。
抽象方法也是被关键字abstract修饰的方法。

2、什么时候用抽象方法

当在继承关系中设计父类的时候,如果父类中的一个公共方法不确定该方法的具体实现时,那么父类干脆就不实现该方法,将其定义成抽象方法,再由子类重写即可。

3、什么时候用抽象类

当需要强制子类重写父类方法的时候使用抽象类

二、语法

1、抽象类的语法

作用域修饰符 abstract class 类名{

}

public abstract class Father{

}

2、抽象方法的语法

修饰符  abstract 返回值类型  方法名(参数列表);
public abstract  void  Father();

三、注意事项

1、一个抽象类可以含有或者不含有抽象方法

比喻:父亲可以有房子也可以没有房子

2、一个类如果被抽象那么只有被子类继承才能有意义

比喻:人民币只有被国家认可才能够在市面上流通,不被认可就不能在市面上流通

3、抽象类中可以有普通方法也可以有抽象方法

解释:在被定义为抽象类后,可以自己定义抽象方法以及普通方法,也可以都不定义,没有要求说必须只有一种,普通方法和抽象方法可以同时定义

4、将父类定义为抽象类后,子类如果想要继承父类的话就必须重写父类的抽象方法

解释:Father类中有eat()的抽象方法,子类如果想要继承父类的话必须重写eat()方法

5、抽象类不能够直接创建对象,如果创建则编译无法通过,但它的子类可以直接创建对象

解释:在抽象类中(也就是被定义为抽象类的父类)不能够使用 new 关键字创建
对象,但是子类可以

6、抽象方法没有方法体

解释:没有方法体的意思就是没有大括号以及大括号里面的内容,直接使用 ; 结束。 可参照第三点中的语法

7、继承抽象类的子类必须重写抽象类中的所有抽象方法,否则该子类也必须声明为抽象类

解释:子类必须重写父类中的抽象方法(即带有abstract关键字的方法)

8、抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想

解释:抽象类只有被子类继承才有它存在的意义,该类就相当于一个模板抽象了一些公共的属性和方法,谁需要使用就可以继承该抽象类并重写里面的抽象方法

四、案例讲解

1、题目

假如我现在需要定义新司机和老司机类,新司机和老司机都有开车功能,开车的步骤都一样,只是驾驶时的姿势有点不同,新司机:开门点火,双手紧握方向盘,刹车;熄火,老司机:开门,点火,右手握方向盘左手抽烟,刹车,熄火。我们可以将固定流程写到父类中,不同的地方就定义成抽象方法,让不同的子类去重写

2、题目分析

由于新司机和老司机都有一个公共的方法:开车,但是两者又在一些方面存在着小小的差别。新司机和老司机在驾驶的时候都必须要开车这个方法,不然无法开车,所以这就体现了抽象类中的特性(在注意点4中,可以回到上面去看看)

3、司机开车的模板类

// 司机开车的模板类
public abstract class Driver {
    public  void go() { //模板方法:具体定义了固定的流程
        System.out.println("开门");
        System.out.println("点火");
        // 开车姿势不确定?定义为抽象方法
        ziShi();
        System.out.println("刹车");
        System.out.println("熄火");
    }

    public abstract void ziShi();
}

4、定义两个使用模板的司机

public class NewDriver extends Driver {

    @Override
    public void ziShi() {
        System.out.println("新司机双手紧握方向盘");
    }
}

public class OldDriver extends Driver {
    @Override
    public void ziShi() {
        System.out.println("老司机右手握方向盘左手抽烟...");
    }
}

5、测试类

public class Demo02 {
    public static void main(String[] args) {
        NewDriver nd = new NewDriver();
        nd.go();

        OldDriver od = new OldDriver();
        od.go();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值