java面向对象之抽象(五)

抽象类

1.抽象类的概念

隐藏内部的实现细节,只对外提供功能的过程

要明白抽象类的概念的概念,首先要明白抽象类用在什么时候?

  • 在子类继承父类的关系中
  • 子类重写父类的方法

多个子类继承父类方法,有都需要各自对该方法进行重写的时候,就可以吧父类的此方法定义为抽象方法(用修饰符abstract修饰此方法)。

(即只提供这个方法这样的功能,具体的实现被父类隐藏了,让子类去实现)

而这样拥有抽象方法的类就被叫做抽象类,类前的修饰符就要用abstract来修饰此把

理解:抽象就是为了继承而存在的,它的抽象方法就是为了强制子类去实现这个方法

就行你爸爸有一套毛坯房,直接给你,你喜欢摆烂不装修,还说住的挺舒服

那么你爸爸很生气,不给你了,说你出钱吧这套毛坯房装修好,我在把房产证换成你的名字

2.抽象的语法

abstract 关键字修饰的类和方法就是抽象方法和抽象类

1.抽象方法
public abstract void eat();

在方法定义的时候加上abstract就是抽象方法,注意抽象方法没有方法体(即没有大括号和括号里的内容),强制子类去实现它

2.抽象类
public abstract class Human{
   
}

在创建类的时候加上abstract修饰类,就是抽象类

在这里插入图片描述

3.抽象类的注意事项
  • 抽象类中可以没有抽象方法,饭抽象方法一定在抽象类中(即你把方法定义成抽象的,那么这个类也就成为了抽象类,你也要把它定义为抽象的)
  • 抽象类可以含有普通方法和成员变量
  • 抽象类不可以被实例化,只可以子类实例化
  • 抽象类的子类一定要实现抽象方法

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();
}

子类1

public class NewDriver extends Driver {

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

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

子类2

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

        OldDriver od = new OldDriver();
        od.go();
    }
}

共同的模板已经定义好拿来用就好,只需要实现自己的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值