栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-简单介绍抽象类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-简单介绍抽象类

文章目录
  • 一、抽象类的介绍
    • 1、什么是抽象类和抽象方法
    • 2、什么时候用抽象方法
    • 3、什么时候用抽象类
  • 二、语法
    • 1、抽象类的语法
    • 2、抽象方法的语法
  • 三、注意事项
  • 四、案例讲解
    • 1、题目
    • 2、题目分析
    • 3、司机开车的模板类
    • 4、定义两个使用模板的司机
    • 5、测试类

一、抽象类的介绍 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();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号